【问题标题】:weird * in function definition [duplicate]函数定义中的奇怪 * [重复]
【发布时间】:2019-05-09 01:10:21
【问题描述】:

我在python的函数定义中遇到了一个奇怪的案例,我看了一些这样的代码:

def abc(dd, *, ee=None): 
    print(dd, ee)

一开始我还以为这段代码是错误的,可能是*args的错别字,但是最近在最新的python3.7中尝试了这段代码,好像可以解释,用法也超级连线,您不能向此函数传递超过 1 个参数:

>>> abc(11, 222)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
    abc(11, 222)
TypeError: abc() takes 1 positional argument but 2 were given
>>> abc(11)
11 None

我问是因为我不知道为什么有人这样写的目的,以及为什么python在Python3中支持这种行为(在python2中不支持)

【问题讨论】:

标签: python python-3.x python-2.7


【解决方案1】:

您的函数似乎有 1 个位置参数和一个命名参数。 * 会吃掉所有其他位置参数,就像 *args 一样,但你不能引用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-20
    • 2020-10-22
    • 2015-10-24
    • 2018-06-22
    • 1970-01-01
    • 2016-01-26
    • 2016-02-22
    • 1970-01-01
    相关资源
    最近更新 更多