我想創建兩個空的列表對象。我試圖用使用單個命令創建兩個對象是否可行?
vList,sList = [],[]
這似乎工作。我從來沒有在任何手冊中看到過這一點(但我的Python仍然非常基礎)。對於非空列表,我會說這樣做會損害可讀性,但可以使用相同的空列表來完成此操作嗎?這被認爲是不好的做法或有沒有不良的副作用?
對於(空)字符串也一樣嗎?
我想創建兩個空的列表對象。我試圖用使用單個命令創建兩個對象是否可行?
vList,sList = [],[]
這似乎工作。我從來沒有在任何手冊中看到過這一點(但我的Python仍然非常基礎)。對於非空列表,我會說這樣做會損害可讀性,但可以使用相同的空列表來完成此操作嗎?這被認爲是不好的做法或有沒有不良的副作用?
對於(空)字符串也一樣嗎?
有沒有不良副作用,除非你使用
vList = sList = []
兩個變量它引用到相同的列表。
我不認爲PEP8對此有任何說明,但我會說在兩條線上拆分作業會讀得更好。
但是,正如@ gorlum0所提到的,如果對象是相關的並且相對簡單,那麼使用元組解包可能會更好。如果它們不相關,那麼讀者可能會很困惑,試圖弄清楚爲什麼你把它們放在一條線上。
在這種情況下,vList的更改也發生在sList中,對嗎? – RubenGeert 2013-02-20 06:57:06
@RubenGeert是的,他們做 – Volatility 2013-02-20 06:57:18
如果對象是_related_和分配很簡單,它可能實際上看起來更好。 – gorlum0 2013-02-20 07:25:54
這是正確的做法。即使多任務似乎並不簡單的情況下,像你非常有用,可以考慮這樣的事情(拆包稍微複雜一點的順序):
>>> d = { 'a': 'x', 'b': 'y', 'c': 'z' }
>>> for i, (key, value) in enumerate(d.iteritems()):
... print (i, key, value)
(0, 'a', 'x')
(1, 'c', 'z')
(2, 'b', 'y')
有沒有有害的副作用,如果你記住,正確的在任何任務發生之前,手邊都會得到充分評估。
我認爲是可以的,但是如果你在逗號後面加空格會更好。 – Keith 2013-02-20 07:05:53