python中函数的参数可以是位置参数也可以是关键字参数,如:
def func(a, b, c):
return " ".join((c, b, a))
#将函数的参数倒置并以字符串的形式输出
print(func("i", "love", "cloud"))
## cloud love i
#位置参数传入
print(func(c="i", b="love", a="cloud"))
## i love cloud
#关键字参数传入
同时位置参数和关键字参数可以混合使用,但是要注意的是位置参数一定要在关键字参数前。
def func(a, b, c):
return " ".join((c, b, a))
#将函数的参数倒置并以字符串的形式输出
print(func("i", c="cloud", b="love"))
## cloud love i
#位置参数和关键字参数混合使用
函数定义时也可以通过关键字参数的形式定义默认参数
def func(a, b, c="cloud"):
return " ".join((c, b, a))
#将函数的参数倒置并以字符串的形式输出
print(func("i", "love"))
## cloud love i
#c参数的默认值确定,可以不输入
print(func("i", "love", "star"))
## star love i
#c参数的默认值确定,也可以通过输入参数来改变输出值
同理,函数中的关键字形式默认参数也只能放在位置参数后。此时输入的参数也可以关键字参数和位置参数混用。
库函数中对位置函数和关键字函数的要求:
我们可以通过help()函数查看函数文档,会有如下发现。
help(abs)
## Help on built-in function abs in module builtins:
##
## abs(x, /)
## Return the absolute value of the argument.
help(sum)
## sum(iterable, /, start=0)
其中函数内都带有斜杠‘ / ’,其表示斜杠左边的参数都必须传入位置参数而不能是关键字参数。而斜杠右侧则都可以使用。如
s = sum([1, 2, 3], 1)
print(s)
a = sum([1, 2, 3], start=1)
print(a)
## 7
## 7
#第一个参数填入可迭代对象,第二个参数填入起始值
因此,我们的自定义函数中也可以使用斜杠‘ / ’来控制传入参数的形式。
def func(a, b, /, c):
print(a, b, c)
func(1, 2, c=3)
## 1 2 3
同样的,也有控制只能使用关键字参数的方法‘ * ’。其中‘ * ’左边的参数可以任意用法,而其右边的参数只能使用关键字参数。
def func(a, b, *, c):
print(a, b, c)
func(1, b=2, c=3)
## 1 2 3