尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
python-第20天:关键字参数与不定长参数
Python 函数进阶指南彻底掌握关键字参数与不定长参数在学习 Python 的过程中定义和调用函数是每个开发者的必经之路。你可能已经学会了如何定义一个简单的函数例如def add(a, b): return a b。但在实际的项目开发中为了让代码更具灵活性和可读性我们需要掌握更高级的参数传递方式。本篇文章将带你深入浅出地理解关键字参数与不定长参数助你编写出更专业、更优雅的 Python 代码。1. 前置准备在开始本文之前建议你已经掌握了以下基础知识Python 的基本语法变量、缩进。如何定义一个最简单的函数使用def关键字。了解位置参数Positional Arguments的概念即参数的位置决定了它们的值。2. 关键字参数 (Keyword Arguments)2.1 什么是关键字参数在调用函数时我们通常按照定义的顺序传入参数。而关键字参数允许我们通过“键-值”对的形式指定参数。2.2 语法示例defgreet(name,message):print(f你好{name},{message})# 传统的位置参数调用greet(小明,早安)# 使用关键字参数调用greet(message早安,name小明)2.3 为什么使用它不限顺序你不再需要死记硬背参数的顺序。代码可读性在调用时直接看到参数名代码意图一目了然。结合默认参数关键字参数常与默认参数Default Arguments配合使用只修改你需要变动的那个参数。3. 不定长参数 (Variable-length Arguments)有时你在定义函数时并不确定用户会传入多少个参数。这时Python 提供了两种强大的工具*args和**kwargs。3.1*args接收任意数量的位置参数*args用于接收一个元组Tuple。当你希望函数能处理不确定个数的数值时它非常有用。语法在参数名前加一个星号*。代码示例defsum_numbers(*args):print(f接收到的参数类型:{type(args)})returnsum(args)print(sum_numbers(1,2,3))# 输出 6print(sum_numbers(10,20,30,40))# 输出 1003.2**kwargs接收任意数量的关键字参数**kwargs用于接收一个字典Dictionary。它允许你传入任意多个带有名称的参数。语法在参数名前加两个星号**。代码示例defbuild_profile(**kwargs):forkey,valueinkwargs.items():print(f{key}:{value})build_profile(name张三,age25,city北京,job工程师)4. 混合使用的黄金法则在一个函数中你可以同时使用位置参数、默认参数、*args和**kwargs。但必须遵守严格的定义顺序否则 Python 会报错位置参数(Standard arguments)*args关键字参数/默认参数(Default arguments)**kwargs综合示例defcomplex_function(a,b,*args,coachUnknown,**kwargs):print(fa:{a}, b:{b})print(fargs:{args})print(fcoach:{coach})print(fkwargs:{kwargs})complex_function(1,2,3,4,5,coachPython大师,task学习,level高级)5. 易错点与避坑指南5.1 关键字参数必须在位置参数之后在调用函数时如果你混合使用位置参数和关键字参数位置参数必须放在前面。❌ 错误greet(name小明, 早安)✅ 正确greet(小明, message早安)5.2 默认参数的陷阱永远不要使用可变类型如列表[]或字典{}作为默认参数。现象由于默认参数在函数定义时只求值一次多次调用会共享同一个对象。对策使用None作为默认值在函数内部进行初始化。# 推荐做法defadd_item(item,item_listNone):ifitem_listisNone:item_list[]item_list.append(item)returnitem_list6. 总结通过本文的学习我们掌握了关键字参数提高代码可读性打破顺序限制。*args用元组接收不限数量的位置参数。**kwargs用字典接收不限数量的关键字参数。参数顺序位置参数 *args 默认参数 **kwargs。掌握这些技巧后你将能够理解 Python 中许多第三方库如 Django, Pandas中复杂的函数调用方式。进阶练习尝试编写一个函数make_pizza(size, *toppings, **details)模拟订购披萨的过程并打印出披萨的尺寸、配料以及其他特殊要求如加辣、外送地址等。希望这篇指南能帮你打下坚实的 Python 函数基础如果你有任何疑问欢迎在评论区交流。
RELATED

相关推荐

把Claude Code用成测试协作者:接口自动化全流程实战

把Claude Code用成测试协作者:接口自动化全流程实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/3 19:22:34
TypeScript微信小程序记账系统工程实践

TypeScript微信小程序记账系统工程实践

简介:这是一份面向计算机类专业在校学生与课程教师的微信小程序开发实践资源,聚焦打牌场景下的轻量级记账功能实现,适用于课程设计、期末大作业及小程序入门进阶学习。项目基于TypeScript语言开发,采用微信原生小程序框架&#xf…

📅 2026/10/6 3:33:38
基于SSM框架的奶茶店管理系统:Java Web实战与业务数字化

基于SSM框架的奶茶店管理系统:Java Web实战与业务数字化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/7 13:21:48
MORE NEWS

更多资讯

📰

Spring Boot日志治理:Logback脱敏与截取实战指南

日志里蹦出用户的手机号、身份证号、银行卡号,这种事在真实项目里一点都不稀奇。我见过太多团队,功能上线跑得飞快,等到要查线上问题、把日志文件拉下来一看,满屏的敏感信息,当场头皮发麻。更麻烦的是,很多…

📰

t3code:三层架构代码模板的落地实践与避坑指南

1. 先说清楚t3code是个什么东西看到“t3code”这个代号,我第一反应是:这多半是某个项目组内部对“Three-Tier Code”的简称,直译过来就是“三层架构代码规范/代码模板”。这个名字起得挺讨巧,t3听起来像一个特定版本号&#xff0c…

📰

t3code实践:用TypeScript打通全栈类型安全与前后端对接

做了几年全栈,我越来越觉得,大部分项目的复杂度并不是业务本身带来的,而是那一层又一层的手动对接——后端写好了类型,前端不知道;数据库里存的是啥,API返回的是啥,全靠人肉同步。一旦需求改起来…

📰

Easy Dataset:大模型训练数据制作的智能解决方案

1. Easy Dataset项目概述:降低大模型训练数据制作门槛在2023年大模型技术爆发的背景下,一个名为Easy Dataset的开源项目在GitHub上迅速走红,获得了超过13K的Star关注。这个项目直击AI领域的一个关键痛点:高质量训练数据集的制作难…

📰

Kubernetes可视化工具下载与部署指南:Linux环境实操与权限配置

1. 为什么要在 Kubernetes 里折腾可视化工具刚接触 Kubernetes 那会儿,我每天的工作流基本就是三件套:kubectl get pods、kubectl describe、kubectl logs,来回切终端窗口,眼睛盯着密密麻麻的文本输出找异常。集群规模小的时候还行…

📰

t3code:用T3 Stack还清全栈工程债的类型安全脚手架

1. t3code 项目概述:把类型安全全栈应用的“工程债”一次还清先开门见山,t3code 是我最近在团队内部落地的一个全栈脚手架项目。它不只是一个create-next-app的二次封装,也不是网上那种只丢给你一个 README 的模板仓库,而是一套完…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬