Python 为什么在打印函数中不能使用value作为关键字参数?
如果我将函数f写为:Python 为什么在打印函数中不能使用value作为关键字参数?,python,python-3.x,Python,Python 3.x,如果我将函数f写为: def f(a, b, c, d = 4, e = 5, f = 6): print(a, b, c, d, e, f) 我通常可以用位置参数调用它: f(1, 2, 3) f(c=3, a=1, b=2) 我也可以使用位置参数作为关键字参数来调用它: f(1, 2, 3) f(c=3, a=1, b=2) 但是,如果使用打印功能执行此操作,则会出现错误: >>> print(value=42) Traceback (most recen
def f(a, b, c, d = 4, e = 5, f = 6):
print(a, b, c, d, e, f)
我通常可以用位置参数调用它:
f(1, 2, 3)
f(c=3, a=1, b=2)
我也可以使用位置参数作为关键字参数来调用它:
f(1, 2, 3)
f(c=3, a=1, b=2)
但是,如果使用打印功能执行此操作,则会出现错误:
>>> print(value=42)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'value' is an invalid keyword argument for this function
编辑:
现在我理解了*对象,我知道print正在寻找一个值的元组。该函数更好地说明了我的要求:
>>> pow(x=2, y=3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pow() takes no keyword arguments
功率(x=2,y=3)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:pow()不接受关键字参数
如果我使用python函数,为什么我似乎永远不能按参数的名称引用它们呢?如上所述,它对我的f函数有效。打印的实现是: 打印(*对象,sep='',end='\n',file=sys.stdout,flush=False)
objects
参数前面有一个*
,因此它应该是一个可变数量的位置参数*
*在@brunodesshuilliers comment之后编辑。但您显示的错误与代码片段无关,因为它显示的是属性
值
。为了回答您的问题,Python在这里使用了*args
。Print函数没有任何名为value
的参数。参考阅读Himanshu Bansal我知道,在那一页他们称它为*对象而不是值。这是我第一次看到*,它是什么意思?@plx for*和**在python中也可以在这里阅读:对象
参数作为一个*
之前,这意味着函数接受一个数量可变的位置参数(在函数体中作为一个元组
可用)。当然,这并不意味着“期望”您将列表传递给print()
。