def func(a, b, c, d): print(a, b, c, d)
func(1, c=3, *(2,), **{'d':4})
func(1, c=3, 2, **{'d':4})
Run Code Online (Sandbox Code Playgroud)
为什么前者呼叫工作但后者不工作?我的意思是不应该第一次返回错误?不*只是解压缩一个iterable?
位置参数必须始终出现在命名和解包参数之前.
在表达式中:
func(1, c=3, 2, **{'d':4})
Run Code Online (Sandbox Code Playgroud)
这2是一个位置参数,c=3而是一个命名参数.用这种方式写的是无效的.您必须在所有位置参数后移动命名参数.
func(1, 2, c=3, **{'d':4})
Run Code Online (Sandbox Code Playgroud)
另一方面,表达式:
func(1, c=3, *(2,), **{'d':4})
Run Code Online (Sandbox Code Playgroud)
已验证. 1是这里唯一的位置参数. c=3是一个命名参数,*(2,)并且**{'d':4}已解压缩.只要位置参数首先出现,它就全部有效.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |