使用前定义变量并将其分配给空列表 - python

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

在上面,由于partslist的输出,因此它应该是.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