Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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 3:打印函数中的星号_Python_Python 3.x - Fatal编程技术网

Python 3:打印函数中的星号

Python 3:打印函数中的星号,python,python-3.x,Python,Python 3.x,我们来看看, print([object, ...], *, sep=' ', end='\n', file=sys.stdout) 我们如何解释这个“*”? 通常星号(“*”)表示许多对象。但这对我来说是个谜。在两个逗号之间。。。我甚至不敢认为这可能是一个打字错误 这意味着以下参数仅为关键字,即不能作为位置参数提供,必须使用它们的名称,例如: >>> def f(*, a): pass ... >>> f(1) Traceback (most rece

我们来看看,

print([object, ...], *, sep=' ', end='\n', file=sys.stdout)

我们如何解释这个
“*”

通常星号(“*”)表示许多对象。但这对我来说是个谜。在两个逗号之间。。。我甚至不敢认为这可能是一个打字错误

这意味着以下参数仅为关键字,即不能作为位置参数提供,必须使用它们的名称,例如:

>>> def f(*, a): pass
... 
>>> f(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() takes exactly 0 positional arguments (1 given)
>>> f(a=1)
>>> # ok
def f(*,a):通过 ... >>>f(1) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:f()只接受0个位置参数(给定1个) >>>f(a=1) >>>#好的 另一个例子:

>>> def g(*a, b): pass
... 
>>> g(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: g() needs keyword-only argument b
>>> g(1, 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: g() needs keyword-only argument b
>>> g(1, b=2)
>>> # ok
>>> g(1, 2, b=3)
>>> # ok
def g(*a,b):通过 ... >>>g(1) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:g()只需要关键字参数b >>>g(1,2) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:g()只需要关键字参数b >>>g(1,b=2) >>>#好的 >>>g(1,2,b=3) >>>#好的
这是文档中的一个错误,由某人将新的Python 3功能应用到不应该使用它的地方插入。自那以后,它已被修复(请参阅)

使用的文档中的函数签名是以psuedo形式语法形式给出的,但是添加
*
标记只有在使用实际python语法时才有意义。在这种情况下,签名的
[对象,…],*
部分应列为
*对象

更正后的版本现在为:

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

截至目前,在线版本尚未更新,但;我会看看我们是否可以要求重新生成文档


需要明确的是:
*
语法在Python3中是有效的,这意味着以下参数只能用作关键字参数,而不能用作位置参数。但是,这不适用于
print()
函数,因为所有位置参数都将被打印,并且永远不会被误认为是关键字参数。

否,这意味着文档生成错误;
,*
是由doc工具错误引起的。@MartijnPieters:try:
def(a,*,b):通过
并查看是否能够提供
b
作为位置参数巴斯蒂安是正确的,a*后面的参数只能作为名称参数提供。这是Python 3中的一个新功能。@J.F.Sebastian:这也是一件很酷的事情,但不是OP所要求的。:-)@马丁·皮耶特斯:事实正好相反。你提到的bug是不相关的。Before/after文档描述了相同的内容(3.3
flush
参数中的新内容除外):
print()
接受零个或多个要打印的位置参数,以及使用默认值指定打印选项的仅关键字参数。星号
*
仍然表示(除了将所有位置参数作为
对象传递
)以下参数应使用其名称提供,即我的答案有效。对不起,请问,我在哪里可以看到错误已被修复?我为您提供了急性链接。错误仍在这里。至于命令行中的帮助,即帮助(打印),它的类型为:打印(值,…,sep='',end='\n',file=sys.stdout)。因此,我也不知道如何解释它。与“对象”相比,“值”意味着什么。那么两个逗号之间的“…”意味着什么。因此,不知何故,我不能完全理解这个函数。@Kifsif:是的,在线文档仍然需要重新生成。开发版本仍然包含不正确的文本。我将您链接到错误报告,其中h已标记为已修复,因为文档源已更新。我从错误报告中提取了更正的版本。两个逗号之间的
是错误生成的方法签名的一部分。