在函数的签名中,星号在不带标识符名称的情况下在Python中意味着什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在函数的签名中,星号在不带标识符名称的情况下在Python中意味着什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1253字,纯文字阅读大概需要2分钟。
内容图文
![在函数的签名中,星号在不带标识符名称的情况下在Python中意味着什么?](/upload/InfoBanner/zyjiaocheng/681/ae598fd48ae344f2a5a764264a93f9d5.jpg)
这个问题已经在这里有了答案: > Bare asterisk in function arguments? 4个
我知道* args的含义和用法.但是有时在*之后没有像args这样的东西.例如,在功能pprint中
def pprint(object, stream=None, indent=1, width=80, depth=None, *,
compact=False):
"""Pretty-print a Python object to a stream [default is sys.stdout]."""
printer = PrettyPrinter(
stream=stream, indent=indent, width=width, depth=depth,
compact=compact)
printer.pprint(object)
签名中有一个*.这是什么意思?
解决方法:
*后面的参数是keyword-only.*“吸收”所有其他位置参数,因此,如果您定义:
def foo(x, y, *, z):
print(x, y, z)
然后致电:
foo(1, 2, 3)
将不起作用,因为没有提供z,并且仅期望两个位置参数:
>>> foo(1, 2, 3)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
foo(1, 2, 3)
TypeError: foo() takes 2 positional arguments but 3 were given
z现在必须由关键字提供:
>>> foo(1, 2, z=3)
1 2 3
您可以使用标准的* args来执行此操作,但是使用*可以清??楚地表明,您不需要任何其他位置参数,并且如果*末尾有任何错误,则会引发错误.正如PEP所说:
The second syntactical change is to allow the argument name to
be omitted for a varargs argument. The meaning of this is to
allow for keyword-only arguments for functions that would not
otherwise take a varargs argument
内容总结
以上是互联网集市为您收集整理的在函数的签名中,星号在不带标识符名称的情况下在Python中意味着什么?全部内容,希望文章能够帮你解决在函数的签名中,星号在不带标识符名称的情况下在Python中意味着什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。