首页 > 代码库 > Python函数中的参数(二)
Python函数中的参数(二)
当使用混合特定的参数匹配模型时,Python将会遵循以下有关顺序的法则:
1、在函数调用中,参数必须以这样的顺序出现:任何位置参数(Value)、任何关键字参数(name = Value)和*sequence形式的组合,最后是**dict形式
2、在函数头部,参数必须以如下的顺序出现:任何一般参数、任何默认参数、如果有的话,是*name(在Python3.0中是*)的形式,然后是任何name或name=value keyword-only参数,最后是**name形式
Python内部是使用以下的步骤来在赋值前进行参数匹配的:
1、通过位置分配非关键字参数
2、通过匹配变量名分配关键字参数
3、其他额外的非关键字参数分配到*name元组中
4、其他额外的关键字参数分配到**name字典中
5、用默认值分配给在头部未得到分配的参数
例子:
1、不含有特殊匹配法的函数,会按照位置从左至右的匹配变量名
1 def f(a, b, c): 2 print(a, b, c) 3 f(1,2,3) 4 5 #输出结果 6 1 2 3
2、关键字参数的匹配
1 def f(a, b, c): 2 print(a, b, c) 3 4 f(c = 3, b = 2, a = 1) 5 6 #输出结果 7 1 2 3
3、默认参数
1 def f(a, b = 2, c = 3): 2 print(a, b, c) 3 4 f(1) 5 6 #输出结果 7 1 2 3
1 def f(a, b = 2, c = 3): 2 print(a, b, c) 3 4 f(1,4) 5 输出结果: 6 1 4 3 7 8 f(1,c = 6) 9 10 输出结果: 11 1 2 6
4、关键字参数和默认参数的混合
1 def func(spam, eggs, toast = 0, ham = 0): 2 print((spam,eggs,toast,ham)) 3 4 func(1,2) 5 #输出结果 6 (1, 2, 0, 0) 7 8 func(1, ham = 1, eggs = 0) 9 #输出结果 10 (1, 0, 0, 1) 11 12 func(spam = 1, eggs = 0) 13 #输出结果 14 (1, 0, 0, 0) 15 16 func(1,2,3,4) 17 #输出结果 18 (1, 2, 3, 4)
5、任意参数的实例
def func(*args): print("#输出结果") print(args) func() #输出结果 () func(1) #输出结果 (1,) func(1,2,3,4) #输出结果 (1, 2, 3, 4)
1 def f(**args): 2 print("#输出结果") 3 print(args) 4 5 f() 6 #输出结果 7 {} 8 9 f(a = 1, b = 2) 10 #输出结果 11 {‘a‘: 1, ‘b‘: 2}
6、混合参数实例
1 def f(a, *pargs, **kargs): 2 print("#输出结果:") 3 print(a, pargs, kargs) 4 5 f(1, 2, 3, x = 1, y = 2) 6 #输出结果: 7 1 (2, 3) {‘y‘: 2, ‘x‘: 1}
Python函数中的参数(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。