Python 中函数的 收集参数 机制
定义函数的时候,在参数前加了一个 * 号,函数可以接收零个或多个值作为参数。返回结果是一个元组。
传递零个参数时函数并不报错,而是返回一个空元组。但以上这种方法也有局限性,它不能收集关键字参数。
对关键字参数进行收集的另一种 收集参数 机制:使用两个星号 ( ** ) ,用法同上。最后返回一个以参数名为键、参数值为键值的字典。
* 和 ** 是可以一起使用的,返回特定的结果。
参数收集的用处之一是使我们编写函数时不用头疼将 N 多个参数都塞在一个括号里,既美观又省事。用处之二便是:
* :可以将一系列值存放进一个元组变量里,可用该元组变量名加一个 * 号作为参数传递给一个正被调用的函数,而后该函数就可以自由地对这些值进行一系列合法的操作。
** :同理,只不过变量存放的方式是字典。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def foo( * param): print (param) def foo_1( * * param): print (param) def foo_2( * param1, * * param2): print (param1) print (param2) if __name__ = = '__main__' : foo( 1 , 2 , 3 , 4 ) # (1, 2, 3, 4) foo_1(a = 1 , b = 2 , c = 3 , d = 4 ) # {'a': 1, 'b': 2, 'c': 3, 'd': 4} foo_2( 6 , 7 , 8 , m = 9 , n = 10 ) # (6, 7, 8) {'m': 9, 'n': 10} |
Python的4种传值的方式,必选传参 func(param)、默认传参func(param=value)、可选传参func(*param)、关键字传参func(**param)
# 必选参数 func(param): # 1、定义函数时的参数个数,顺序已定义好,在调用函数调时的参数个数、顺序必须一致,不能多,也不能少,也不能乱(和之前的顺序一致),因此叫必选参数,这是最常用的传参方式
def test(param1,param2,param3):
print param1,param2,param3
test(1,"hello",True)
test(True,1,"hello")
执行结果:
1 hello True
True 1 hello
# 默认参数func(param=value): #
1、定义函数时,已为参数设定一个默认值,假如调用函数时不传参,在函数内部使用参数时的值则为默认值,传参时则和必选参数一样使用
# 2、如果必选参数和默认参数同时存在,则默认参数必须跟在必选参数后面
# 3、如果有多个默认参数,调用时顺序可以不一致,但是必须要显式表明是哪个默认参数,例如 param2=100,但是建议统一按照函数定义的顺序进行使用
def test(param1,param2=100,param3=True):
print param1,param2,param3 test(1)
# 默认参数可以不传 test(1,"hello",False)
# 多个默认参数时,调用顺序一致 test(1,param3=False,param2="hello")
# 调用顺序也可以不一致
执行结果:
1 100 True
1 hello False
1 hello False
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2016-01-15 vs2010下如何调试带输入参数的程序
2010-01-15 虚函数可不可以是内联函数