首页 > 解决方案 > Python __init__ * argument

问题描述

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

标签: pythoninit

解决方案


在 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 中,此语法无效。


推荐阅读