问题
So I'm pretty new to Python and there is this library I want to work with. However there is an argument in the constructor of the class which I can't find anything about.
init method looks like this:
def __init__(self, ain1, ain2, bin1, bin2, *, microsteps=16):
What does the * do? As far as I know the self is just the object itself and the others are just arguments. But what's the * ?
Link to the full class: check line 73
Thanks in advance
回答1:
In Python 3, adding *
to a function's signature forces calling code to pass every argument defined after the asterisk as a keyword argument:
>> 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
In Python 2 this syntax is invalid.
回答2:
The *
indicates something called keyword arguments. Basically, this means you must specify the names of the parameters after the *
. For example, if you had this method:
def somemethod(arg1, *, arg2):
pass
you can call it this way:
somemethod(0, arg2=0)
but not this way:
somemethod(0, 0)
Using the *
forces the user to specify what arguments are getting what values.
来源:https://stackoverflow.com/questions/53795545/python-init-argument