Python函数参数详解:收集参数(*与**)及四种传参方式
本文深入解析Python函数的参数机制,重点讲解使用*和**进行参数收集的原理与区别,并系统介绍必选、默认、可选及关键字传参四种方式的具体用法、规则及注意事项,帮助开发者编写更灵活、规范的Python代码。
Python函数收集参数机制:*与**详解
在定义函数时,若需在参数名前添加单个星号(*),该函数即可接收零个或多个位置参数。这些被接收的参数在函数内部会被封装为一个元组返回。
当调用该函数时未传递任何参数,程序不会报错,而是返回一个空元组。需要注意的是,这种仅使用单个星号的方式存在局限,它无法收集关键字参数。
若要收集关键字参数,可采用另一种收集参数机制:在参数名前添加两个星号(**)。其用法与单个星号类似,但最终返回的是一个字典,其中参数名作为键,参数值作为键值。
单个星号(*)和两个星号(**)可以在同一个函数定义中同时使用,从而同时处理位置参数和关键字参数,并返回特定的组合结果。
参数收集机制的主要优势在于简化函数定义,避免将大量参数罗列在括号内,使代码结构更清晰且易于维护。此外,该机制还有另一层重要用途:
对于单个星号(*):它可以将一系列值存储到一个元组变量中。若需将该元组中的值作为参数传递给另一个被调用的函数,只需在元组变量名前加一个星号即可。调用后的函数便可对这些值执行一系列合法操作。
对于两个星号(**):其原理与上述类似,区别在于变量存储的数据结构为字典。
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函数四种传参方式详解
Python中函数传值主要包含四种方式:必选传参(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
以上关于Python中函数收集参数机制及传参方式的解析即为全部内容,希望能对读者有所帮助,欢迎继续支持相关技术分享。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









