python 函数的参数
1. 形参、实参
形参,徒有其形,没有固定值,只是个形式而已。
实参,有实实在在的值,传递给函数
def test(x,y,z = 3): # x,y,z 形参
print(x,y,z)
test(1,2) # 1,2 实参
2. 位置参数和默认参数
位置参数是严格按照一一对应的关系,将你的实参和位置参数对应赋值。位置参数就是占位符。默认参数则自带一个默认值,如果用户不传递这个参数,就使用默认值。
def test(x,y,z = 3): # x,y,z 形参; 其中x,y是位置参数,z是默认参数
print(x,y,z)
test(1,2) # 1,2 实参,1对应赋值给x,2对应赋值给y;没有给默认参数z赋值,使用z的默认值
test(1,2,4) # 给默认参数也重新赋值:4
3. 关键字参数
关键字参数,就是手动的将 形参 和 实参 对应起来,然后将 值 传递给函数
def test(x,y,z = 3): # x,y,z 形参;
print(x,y,z)
test(y=2 ,x=1, z=5) # 关键字参数,直接赋值,可以打乱x/y/z 的赋值顺序
test(1,2,z=5) # 注意,当位置参数和关键字参数同时存在时,关键字参数一定要放在位置参数之后!
4.可变参数
可变参数可以允许传入多个参数,没有固定数量,以 *<参数名>
来表示
# 可变参数
def test2(x,y,z=3,*args): # *args 会把多传入的参数变成一个元组
print(x,y,z,args)
test2(1,2,3,4,5,6) # 1,2,3 分别赋值给 x,y,z; (4,5,6) 赋值给了 *args
另一种可变参数,会将关键字参数作为传递给函数,然后转换成键值对,用**
表示:**kwargs
def test3(x,y,z=3,*args,**kwargs): # **kwargs接受关键字参数,作为键值对存入字典
print(x,y,z,args,kwargs)
test3(1,2,3,4,5,6,name = '1',age = 22) # 此处的关键字参数作为键值对,存入**kwargs: {‘name’:'1','age':22}
5. 参数的顺序
当一个函数同时存在多种参数类型时,参数的排序应该是:位置参数、默认参数、关键字参数、*args、**kwargs
eg.
def test3(x,y,z=3,*args,**kwargs):
print(x,y,z,args,kwargs)
6. 其他参数语法 / *(python 3.8新增)
/
之前的参数必须使用位置参数,不能使用键值对形式的关键字参数。
*
之后的参数必须使用关键字参数
/
和 *
之间的参数,关键字参数或者位置参数都可以使用
def get(a,b,/,c,*,d): # a,b 必须是位置参数。c 可以是位置参数也可以是关键字参数。d 必须使用关键字参数
print(a,b,c,d)
get(1,2,c=3,d=4)
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构