Python中不可理解的语法-将变量作为参数传递
我找不到为什么要使用这两个调用,以及这两个调用之间是否存在任何差异:Python中不可理解的语法-将变量作为参数传递,python,function,Python,Function,我找不到为什么要使用这两个调用,以及这两个调用之间是否存在任何差异: someFunction(10) 及 函数的初始调用使用位置参数-即,它将“10”与参数的第一个参数匹配 但是,如果使用关键字参数显式调用该函数,它将使用指定的关键字匹配该值 def kwarg_func(x = 5, y = 10, z = 2): return x * y * z # will return 200 (10 * 10 * 2) print(kwarg_func(10)) # will retur
someFunction(10)
及
函数的初始调用使用位置参数-即,它将“10”与参数的第一个参数匹配 但是,如果使用关键字参数显式调用该函数,它将使用指定的关键字匹配该值
def kwarg_func(x = 5, y = 10, z = 2):
return x * y * z
# will return 200 (10 * 10 * 2)
print(kwarg_func(10))
# will return 10 (5 * 1 * 2)
print(kwarg_func(y = 1))
# will throw an error since keyword 'a' is undefined
print(kwarg_func(a = 1))
所以,之所以要传递x=10,是因为它是a,或者x是在变量中设置的
def somefunction(x=5):
print(x*x)
somefunction(x=10)
这将导致10*10,因此为100
这背后的原因是Python接受有效的位置参数:
def somefunction(x)
#dosomestuff
其中,对于可以传递给它的参数,somefunction中的x位于位置0
其中:
def somefunction(x=10)
#dosomestuff
是关键字参数(但也可以使用它的位置)
位置参数必须在关键字参数之前
python教程对此有很好的理解:您的问题有点模糊,这取决于您的函数构造。
假设您有一个函数:
def someFunction(x):
return x
然后您可以通过
someFunction(10)
或someFunction(x=10)
调用它,后者更详细,但第一个就足够了。查找args
和**kwargs
以更好地理解,例如,args和kwargs
具有重要意义。首先,10
是arg
(参数),x=10
(关键字参数)被称为kwarg
这两者之间最基本的区别是arg按顺序排列,而kwarg不按顺序排列。
kwargs可以按任何顺序提供
在阅读此答案之前,我希望您对python默认参数有一些了解
def func(a=25, b, c, d=3, e, f=2, g, h=1, i):
return a * b * c * d * e * f * g * h * i
在这个函数中,可以传递所有参数,也可以只传递基本参数
基本参数有b
,c
,e
,g
,i
默认参数是a
,d
,f
,h
。
因此,问题变成了如何只为基本参数传递值
答案是夸尔斯。因为对于kwargs来说,顺序并不重要,我们可以将参数作为
func(b=3,c=4,e=2,g=10)
或func(c=4,g=10,b=3,e=2)
来传递。如果您有一个名为x
的参数,那么何时使用它?关键字参数可以按任何顺序传递,但位置参数不能。参见args vs kwargs。
def func(a=25, b, c, d=3, e, f=2, g, h=1, i):
return a * b * c * d * e * f * g * h * i