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

时间:2017-11-14 11:33:56

标签: 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)

但是,如果我使用print函数执行此操作,则会出现错误:

>>> print(value=42)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'value' is an invalid keyword argument for this function

我尝试将值用作关键字,因为它是我在help(print)时显示的内容:

Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

编辑

现在我理解了*对象,我得到的是打印正在寻找值的元组。 pow函数说明了我的要求:

>>> pow(x=2, y=3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pow() takes no keyword arguments

如果我使用python函数,为什么我似乎永远不会通过名字引用参数?如上所示,它适用于我的f功能。

1 个答案:

答案 0 :(得分:0)

print的实施是this

  

print(* objects,sep ='',end ='\ n',file = sys.stdout,flush = False)

objects参数之前有一个*,所以它应该是可变数量的位置参数*

* @brunodesthuilliers 评论后编辑。