在Python函数中使用星号(*)作为参数

12 浏览
0 Comments

在Python函数中使用星号(*)作为参数

这个问题已经在函数参数中的星号有什么作用?这里有了答案:

我正在查看glob函数的定义,我注意到第二个参数只是一个*

def glob(pathname, *, recursive=False):
    """Return a list of paths matching a pathname pattern.
    [...]
    """
    return list(iglob(pathname, recursive=recursive))

这个*有什么意义?

admin 更改状态以发布 2023年5月23日
0
0 Comments

*后面的所有参数都必须显式指定其名称。例如,如果您有以下函数:

def somefunction(a,*,b):
    pass

您可以这样写:

somefunction(0, b=0)

但不能这样写:

somefunction(0, 0)

0
0 Comments

* 表示位置参数的结尾。之后的每个参数只能通过关键字指定。这在 PEP 3102 中定义。

>>> def foo1(a, b=None):
...     print(a, b)
...
>>> def foo2(a, *, b=None):
...     print(a, b)
...
>>> foo1(1, 2)
1 2
>>> foo2(1, 2)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: foo1() takes 1 positional argument but 2 were given
>>> foo2(1, b=2)
1 2

0