What do * (single star) and / (slash) do as independent parameters?(*(单星)和/(劈开)作为独立参数有什么作用?)
本文介绍了*(单星)和/(劈开)作为独立参数有什么作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在以下函数定义中,*和/占什么位置?
def func(self, param1, param2, /, param3, *, param4, param5):
print(param1, param2, param3, param4, param5)
注意:不要混淆*args|**kwargs(solved here)
中的单|双星号推荐答案
有new function parameter syntax/
指示某些函数参数必须位置指定,不能用作关键字参数。[这是Python 3.8
]
文档指定了positional-only parameters
的一些使用情形/优势
它允许纯Python函数完全模拟 现有的C代码函数。例如,内置的
pow()
函数不接受关键字参数:def pow(x, y, z=None, /): "Emulate the built in pow() function" r = x ** y return r if z is None else r%z
另一个用例是当参数 名字无济于事。例如,内置
之类的尴尬呼叫len()
函数具有 签名len(obj, /)
。这就避免了诸如:len(obj='hello') # The "obj" keyword argument impairs readability
将参数标记为仅位置的另一个好处是 它允许将来更改参数名称,而不需要 有破坏客户端代码的风险。例如,在统计模块中, 参数名称dist将来可能会更改。这是做好的 可能具有以下功能规范:
def quantiles(dist, /, *, n=4, method='exclusive') ...
其中AS*
用于强制caller to use named arguments。This is命名参数的用例之一。
因此,给定的方法
def func(self, param1, param2, /, param3, *, param4, param5):
print(param1, param2, param3, param4, param5)
必须用
调用obj.func(10, 20, 30, param4=50, param5=60)
或
obj.func(10, 20, param3=30, param4=50, param5=60)
ie,
param1
,param2
必须指定positionally。param3
可以用positional或keyword调用。param4
和param5
必须使用keyword参数调用。
演示:
>>> class MyClass(object):
... def func(self, param1, param2, /, param3, *, param4, param5):
... return param1, param2, param3, param4, param5
...
>>> obj = MyClass()
>>>
>>> assert obj.func(10, 20, 30, param4=40, param5=50), obj.func(
... 10, 20, param3=30, param4=40, param5=50
... )
这篇关于*(单星)和/(劈开)作为独立参数有什么作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:*(单星)和/(劈开)作为独立参数有什么作用?


猜你喜欢
- 沿轴计算直方图 2022-01-01
- python-m http.server 443--使用SSL? 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01
- 如何将一个类的函数分成多个文件? 2022-01-01