Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么在打印函数中不能使用value作为关键字参数?_Python_Python 3.x - Fatal编程技术网

Python 为什么在打印函数中不能使用value作为关键字参数?

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

如果我将函数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 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()