gpt4 book ai didi

Python 元组...不是元组吗?逗号有什么作用?

转载 作者:太空狗 更新时间:2023-10-30 01:53:21 26 4
gpt4 key购买 nike

我在查看类(class) Material 中的代码时不得不编写一个函数,将值 99 添加到 listtuple 中。最终代码如下所示:

def f(l):
print(l)
l += 99,
print(l)

f([1,2,3])
f((1,2,3))

这用于显示一些不同的东西,但我在 l += 99, 这行有点挂断了。它的作用是创建一个包含 99 和 list 以及 tuple 的可迭代对象,支持简单地“添加”此类对象以创建新实例/添加一个新元素。

我真正不明白的是,使用语法 element, 究竟创建了什么?如果我做一个像 x = 99, 这样的赋值,type(x) 将是 tuple 但如果我尝试运行 x = tuple (99) 它将失败,因为 99 不可迭代。也有:

  • 使用语法 element, 创建的某种中间可迭代对象?
  • 是否定义了一个特殊函数,允许调用 tuple 而无需迭代,并且 , 以某种方式映射到它?

编辑:如果有人想知道为什么接受的答案是这样的:我的第二个问题的解释是正确的。我应该更清楚我的问题,但是 += 实际上让我感到困惑,这个答案包含了这方面的信息。

最佳答案

如果 = 的左侧参数是一个简单名称,则当前绑定(bind)到该名称的参数类型是无关紧要的。 tuple(99) 失败,因为 tuple 的参数不可迭代;它与 x 是否已经引用 tuple 的实例无关。

99, 创建一个只有一个参数的元组;括号只是为了将其与逗号的其他用法分开。例如,foo((99,100)) 使用单个元组参数调用 foo,而 foo(99,100) 调用 foo 有两个不同的 int 参数。

关于Python 元组...不是元组吗?逗号有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067409/

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