gpt4 book ai didi

Python - 方法参数中的值解包顺序

转载 作者:行者123 更新时间:2023-12-02 06:41:18 26 4
gpt4 key购买 nike

def fun(a, b, c, d):
print('a:', a, 'b:', b, 'c:', c, 'd:', d)

为什么这个有效

fun(3, 7, d=10, *(23,))

并打印出:

a: 3 b: 7 c: 23 d: 10

此时

fun(3, 7, c=10, *(23,))

没有

Traceback (most recent call last):
File "/home/lookash/PycharmProjects/PythonLearning/learning.py", line 10, in <module>
fun(3, 7, c=10, *(23,))
TypeError: fun() got multiple values for argument 'c'

最佳答案

使用 *(23,),您可以将元组 (23,) 中的值解压为位置参数,遵循已定义的位置参数,即3 代表 a7 代表 b,因此 23 将被分配给参数c,这就是为什么 fun(3, 7, d=10, *(23,)) 可以工作,但在 fun(3, 7, c= 10, *(23,)) 您还将值 10 分配给 c 作为关键字参数,因此它被视为与 冲突c 不能同时指定为 2310

请注意,虽然合法,但有些人不鼓励在关键字参数之后解压可迭代参数,如讨论的 here ,尽管语法最终被裁定保留。

关于Python - 方法参数中的值解包顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58961715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com