python - 没有位置参数的仅关键字参数
问题描述
请解释这段突出显示的代码,特别是方法定义所在的部分。问题:
- 为什么星号在没有任何参数的情况下在开始,这在python中是什么意思。
- 调用函数“选择”之前的星号,是什么意思?
- 它如何强制 python 使用仅限关键字的参数?
解决方案
我觉得图片清楚地解释了它,但这是一个简化版本:
*
结束位置参数。在 python 中,位置参数总是在关键字参数之前。
def test(a, v, b):
print(v)
test(3, v=7, 5) # illegal, kwargs have to be last (SyntaxError)
test(3, v=7, b=5) # legal
test(3, 7, 5) # legal
但是假设我们希望用户始终指定v
并且b
在离开a
位置的同时。
def test(a, *, v, b):
print(v)
test(3, v=7, b=5) # legal
test(3, 7, 5) # illegal, takes one positional argument but 3 were given
test(3, 5, v=7, b=5) # illegal, 2 were given
推荐阅读
- javascript - 不确定如何在应用程序中正确包含 Scrollview
- r - 按列值分隔数据集
- bash - 来自源文件的 Bash 循环动态变量
- python - Django ModelAdmin get_form 'NoneType' 对象不可调用
- sql-server - SQL 查询求和计算字段
- html - 我放在我的 html 代码中的图像不起作用
- python - Python Selenium - 未通过显式等待单击复选框
- python - 获取内部嵌套字典
- c# - 连接两个表并从第一个表中选择一个相关值
- reactjs - 在 useEffect 挂钩中请求未知数量的 API 页面的最佳方法