python - 为什么 Python 在关键字参数之后允许 *args?
问题描述
例子:
def foo(a, b=2, *args, **kwargs): pass
为什么这不会导致 SyntaxError?*args 不会捕获额外的非关键字参数,因为在关键字参数之后传递它们是非法的。
对于 python3.x,*args 的正确使用,在这种情况下 **kwargs 看起来像:
def foo(a, *args, b=2, **kwargs): pass
感谢您对这种奇怪行为的任何见解。
编辑:
感谢 Jab 将我指向 PEP 3102,它简明地解释了这种行为。一探究竟!
还要感谢 jsbueno 的额外出色解释,由于它的彻底性,我将其更新为最佳答案。
解决方案
推荐阅读
- c++ - CMake 错误:无法确定目标的链接语言
- php - 包含带有 try 和 catch 函数的文件
- javascript - 如何将一个真或假的 const 列表分类为两个单独的数组,一个包含真对象,一个包含假对象?
- maven - 如何使用 SonarCloud 分析 Git 子模块?
- docker - 如何显示在 Docker 容器内运行的操作系统的 GUI?
- python - 如何修复 Python 中的 GridSearchCV 错误?
- html - Bootstrap 导航栏图标和切换按钮问题
- ssl - 我可以替换 client-ca-file 以使 kubernetes 上的所有用户无效吗?
- asp.net - 如何解决这个IIS慢的问题?
- javascript - process.env.API_URL 未定义