这三种变量赋值的区别

difference between these 3 types of variable assignments

在Python中,似乎我可以做以下3个变量赋值中的任何一个:

g = (3, 4, 5)

g = "(3, 4, 5)"

g = 3, 4, 5

其次是

print(g)

并且输出总是

(3, 4, 5)

那么,这3种变量赋值有什么区别呢?

  • 第一个是三元素元组。
  • 第二个是一些字符串。
  • 第三个是相同的三元素元组,因为在这种情况下括号是多余的。

一小段代码就足以证明这一点:

g1 = (3, 4, 5)
g2 = "(3, 4, 5)"
g3 = 3, 4, 5
type(g1)  # <type 'tuple'>
type(g2)  # <type 'str'>
type(g3)  # <type 'tuple'>
g1 == g3  # True
g1 == g2  # False
g2 == g3  # False
g1[0]  # 3, first element of tuple, type: int
g2[0]  # "(", first char of string, type: str

综上所述,对象的字符串表示和对象属性是两个不同的概念。可能有多个具有相同字符串表示但行为不同的对象。

案例 #1 和案例 #3 都导致 tuple,通过 expression_list 创建;可以将其括在[括号中],如您的案例#1,或不包括,如您的案例#3。 Python 中的某些操作允许语法(例如定义新的 tuplefor...in 循环),某些操作需要包含 expression_list(例如 if 语句);在任何情况下,结果都是一个 tuple 对象。

案例 #2 显然是任何语言的 string,包括 Python。 :)