【问题标题】:Python: What does "myvar = 1000," do? [duplicate]Python:“myvar = 1000”有什么作用? [复制]
【发布时间】:2020-11-19 02:41:29
【问题描述】:

之前我正在编写一些代码,当我在创建变量 myvar 时打错字时,它并没有通过错误或采取不同的行动。这是一行:

myvar, var2 = 1000, 1000,

为什么没有错误?

【问题讨论】:

  • 它生成一个元组。

标签: python python-3.x variables python-3.5


【解决方案1】:

您正在生成一个元组并将其同时解压缩为两个不同的变量。你可以检查

mytuple = 1000, 1000,

这将生成(1000,1000) 中的tuple,无论最后的逗号是否存在(后面没有值)。
你会生成一个大小为 1 的元组

mytuple = 1000,

现在,您将在下一步中有效地破坏元组

myvar, var2 = 1000, 1000,

最后你有两个 int 类型的变量。

【讨论】:

  • 上面写着class int,它是用其他的
  • @Psychzander:好吧,那么你显然没有发布所有内容。
【解决方案2】:

对于新示例,您实际上仍在处理元组。 如果你打印出右手边是什么,你会得到

testVar = 1000, 1000,
print(testVar)

# result:
(1000,1000)

实际上发生的事情是 Python 看到一个元组,然后将其解压缩为两个值,并将一个分配给 myvar,另一个分配给 var2。归根结底,右手边仍然充当元组。

事实上,我们知道这是真的另一种方式是,如果我们尝试解压它但我们没有提供足够的变量:

myvar, = 1000, 1000,

这会引发异常:

ValueError: too many values to unpack (expected 1)

【讨论】:

  • 虽然它是与其他变量在一行中制作的,但当我打印它时它没有括号
  • 那么请给出一个最小可重复的例子。正如其他人也指出的那样,他们也得到了元组
  • 对多个变量进行了编辑,我认为这无关紧要
  • 原来不是真的,更新了我的答案
  • 任一面打印类 int
【解决方案3】:

你已经编辑了你的帖子,所以现在它提出了一个不同的问题。

In [1]: myvar = 10, 10

In [2]: myvar
Out[2]: (10, 10)

In [3]: myvar[0]
Out[3]: 10

In [4]: myvar, myvar2 = 10, 10

In [5]: myvar
Out[5]: 10

In [6]: myvar2
Out[6]: 10

In [7]: myvar, myvar2 = [10, 100] # A list

In [8]: myvar
Out[8]: 10

In [9]: myvar2
Out[9]: 100

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 2020-11-22
    • 2021-08-29
    • 2018-11-18
    相关资源
    最近更新 更多