>> tuple([0]) (0,) >>> tuple(['i']) ('i',) -6ren">
gpt4 book ai didi

python - 为什么 "tuple([0])"打印为 "(0, )"?

转载 作者:太空宇宙 更新时间:2023-11-04 03:25:56 24 4
gpt4 key购买 nike

在 python 2 中将列表转换为元组时,我注意到将具有单个项目的任何列表转换为元组会在项目后产生一个逗号。

>>> tuple([0])
(0,)
>>> tuple(['i'])
('i',)

显示逗号的原因是什么?
它会导致除打印方式之外的任何意外行为吗?

我还注意到必须用逗号声明单个元组。

>>> (0)
0
>>> (0,)
(0,)

大概这是为了做出这样的表达

>>> 5 * (2 + 3)
25

代替

>>> 5 * (2 + 3)
(5, 5, 5, 5, 5)

最佳答案

这样输出就是对象的有效 Python 表示,这就是 repr 应该产生的结果。 (在元组的情况下,strrepr 相同,因为没有令人信服的理由使它们不同。)结尾的逗号是必需的,否则它实际上不是一个元组的表示。

来自关于 repr 的 Python 文档:

Return a string containing a printable representation of an object. This is the same value yielded by conversions (reverse quotes). It is sometimes useful to be able to access this operation as an ordinary function. For many types, this function makes an attempt to return a string that would yield an object with the same value when passed to eval(), otherwise the representation is a string enclosed in angle brackets that contains the name of the type of the object together with additional information often including the name and address of the object.

>>> eval(repr(tuple([0])))
(0,)

如果没有产生逗号,这将不成立。

关于python - 为什么 "tuple([0])"打印为 "(0, )"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32999098/

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