python - 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
解决方案
在 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 中,此语法无效。
推荐阅读
- sql - TRIGGER DELETE 有两个条件
- spacemacs - 使用 git 层时显示的控制序列
- regex - 如何构造正则表达式来比较shell脚本中不区分大小写的字符串?
- button - 对 ActionListener 感到困惑
- ios - 尝试将 xcode 项目构建到电话后,多个“clang:错误:没有这样的文件或目录”
- vim - Vim 选择中的交换点和标记
- php - 如何在 PHP 中使用 Azure Blob 存储实现视频流/分块编码?
- postgresql - 将 JSON 作为关联对象返回?
- python - Python打印变量的名称?
- php - 使用 heroku-fcgi 处理没有 .php 扩展名的文件 (Apache)