Python 为什么从字典传递的元组参数后面有逗号?

Python 为什么从字典传递的元组参数后面有逗号?,python,python-3.x,python-3.6,Python,Python 3.x,Python 3.6,最近,我注意到,当我从字典中传递到作为元组值的函数参数时,它的末尾有一个逗号。 下面是我的问题的简单代码示例 def myfun(*args): print(f'args={args}') x, y = args print(f'x={x}, y={y}') myfun(1, 2) # passing arguments this way works fine arg_dict = {0: (1, 2), 1: (2, 3)} print(f'arg_dict[0]={ar

最近,我注意到,当我从字典中传递到作为元组值的函数参数时,它的末尾有一个逗号。 下面是我的问题的简单代码示例

def myfun(*args):
   print(f'args={args}')
   x, y = args
   print(f'x={x}, y={y}')


myfun(1, 2) # passing arguments this way works fine
arg_dict = {0: (1, 2), 1: (2, 3)}
print(f'arg_dict[0]={arg_dict[0]}') # when I print dictionary value it seems quite OK.
myfun(arg_dict[0]) # passed dictionary value has trailing comma.
以下是输出:

args=(1, 2)
x=1, y=2
arg_dict[0]=(1, 2)
args=((1, 2),)
Traceback (most recent call last):
  File "c:\Users\name\Documents\pname\test.py", line 28, in <module>
    myfun(arg_dict[0])
  File "c:\Users\name\Documents\pname\test.py", line 21, in myfun
    x, y = args
ValueError: not enough values to unpack (expected 2, got 1)
args=(1,2)
x=1,y=2
arg_dict[0]=(1,2)
args=((1,2),)
回溯(最近一次呼叫最后一次):
文件“c:\Users\name\Documents\pname\test.py”,第28行,在
myfun(arg_dict[0])
myfun中第21行的文件“c:\Users\name\Documents\pname\test.py”
x、 y=args
ValueError:没有足够的值来解包(预期值为2,实际值为1)
我想知道为什么python解释器决定像这样从字典中打包元组?
我使用的是python3.6。

您将tuple作为第一个参数传递。 您需要解压缩值:

myfun(*arg_dict[0])

将tuple作为第一个参数传递。 您需要解压缩值:

myfun(*arg_dict[0])