【发布时间】:2018-12-15 17:26:22
【问题描述】:
所以我对 Python 还是很陌生,我想使用这个库。但是,类的构造函数中有一个参数,我找不到任何关于它的内容。
init 方法如下所示:
def __init__(self, ain1, ain2, bin1, bin2, *, microsteps=16):
* 有什么作用?据我所知,自我只是对象本身,其他只是论点。但是 * 是什么?
完整课程链接: check line 73
提前致谢
【问题讨论】:
所以我对 Python 还是很陌生,我想使用这个库。但是,类的构造函数中有一个参数,我找不到任何关于它的内容。
init 方法如下所示:
def __init__(self, ain1, ain2, bin1, bin2, *, microsteps=16):
* 有什么作用?据我所知,自我只是对象本身,其他只是论点。但是 * 是什么?
完整课程链接: check line 73
提前致谢
【问题讨论】:
在 Python 3 中,将 * 添加到函数的签名会强制调用代码将星号之后定义的每个参数作为关键字参数传递:
>> def foo(a, *, b):
.. print('a', a, 'b', b)
>> foo(1, 2)
TypeError: foo() takes 1 positional argument but 2 were given
>> foo(1, b=2)
a 1 b 2
在 Python 2 中,此语法无效。
【讨论】:
* 表示称为keyword arguments 的东西。基本上,这意味着您必须在* 之后指定参数的名称。例如,如果你有这个方法:
def somemethod(arg1, *, arg2):
pass
你可以这样称呼它:
somemethod(0, arg2=0)
但不是这样:
somemethod(0, 0)
使用* 强制用户指定哪些参数获取哪些值。
【讨论】: