关于init:Python __init__ *参数

Python __init__ * argument

本问题已经有最佳答案,请猛点这里访问。

所以我对python很陌生,我想和这个库一起工作。但是,在类的构造函数中有一个参数,我找不到任何关于它的信息。

init方法如下:

def __init__(self, ain1, ain2, bin1, bin2, *, microsteps=16):

*的作用是什么?据我所知,自我只是物体本身,其他的只是论点。但*是什么?

链接到完整类:检查线73

提前谢谢


在python 3中,将*添加到函数的签名中,强制调用代码将星号后面定义的每个参数作为关键字参数传递:

1
2
3
4
5
6
7
8
>> 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

在Python2中,此语法无效。


*表示称为关键字参数的东西。基本上,这意味着您必须在*后面指定参数的名称。例如,如果您有此方法:

1
2
def somemethod(arg1, *, arg2):
    pass

你可以这样称呼它:

1
somemethod(0, arg2=0)

但不是这样:

1
somemethod(0, 0)

使用*强制用户指定获得什么值的参数。