s = "text"
parts = [] # <<< why not just parts = 0
print id(parts) # 3074379948
parts = s.split()
print id(parts) # 3074380332
我在几个程序中都看到了,但是我不明白为什么。因为parts
引用不同的对象。所以这仅仅是为了可读性?
python大神给出的解决方案
如果看一下代码的第二部分,您会发现正在发生的分配是
parts = s.split()
print id(parts) # 3074380332
在上面,由于parts
是list
的输出,因此它应该是.split
。因此,使用相同类型的值(例如parts = []
)实例化它以保持程序的一致性是合乎逻辑的。
想象一个场景,其中第二部分失败(示例代码),而您仍然想对parts
进行操作。如果使用任何其他值实例化此代码,则代码在逻辑上会变得不一致,并可能引发错误。如果您在下面进行了parts = 0
操作,那么它将简单地失败了,从那时起,部件将不再是可迭代的,依此类推:
parts = [] # works
# parts = 0 # doesn't work
try:
s = 0
parts = s.split()
except:
pass
for part in parts:
print part