这三种变量赋值之间的差异

时间:2016-05-11 08:59:40

标签: python variable-assignment

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

g = (3, 4, 5)

g = "(3, 4, 5)"

g = 3, 4, 5

接着是

print(g)

,输出始终为

(3, 4, 5)

那么,这三种变量赋值之间的区别是什么?

2 个答案:

答案 0 :(得分:12)

  • 第一个是三元素元组。
  • 第二个是字符串。
  • 第三个元素是相同的三元素元组,因为在这个上下文中括号是多余的。

小代码片段足以证明它:

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 :(得分:1)

案例#1和#3都会产生tuple,通过expression_list创建;可以在[括号]中括起来,如在案例#1中,或者在案例#3中未封闭。 Python中的某些操作允许任一语法(例如定义新的tuplefor...in循环),有些需要括起来的expression_list(例如if语句);在任何情况下,结果都是tuple对象。

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