如果我这样写我的函数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功能。
答案 0 :(得分:0)
print
的实施是this:
print(* objects,sep ='',end ='\ n',file = sys.stdout,flush = False)
objects
参数之前有一个*
,所以它应该是可变数量的位置参数*
* @brunodesthuilliers 评论后编辑。