1
什麼是一些代碼結構/編程技術來避免這種情況:提高代碼的可讀性,給python腳本有點更優雅
if url.netloc == "www.youtube.com" or "youtu.be" or "soundcloud.com or //
"instagram.com" or "vine.co" or ETC ETC
do XYZ
什麼是一些代碼結構/編程技術來避免這種情況:提高代碼的可讀性,給python腳本有點更優雅
if url.netloc == "www.youtube.com" or "youtu.be" or "soundcloud.com or //
"instagram.com" or "vine.co" or ETC ETC
do XYZ
最簡單的,我想,應該是:
xyz_targets = ('www.youtube.com', 'youtu.be', ...)
if url.netloc in xyz_targets:
doXYZ()
甚至:
actions = {'www.youtube.com': doXYZ,
'youtu.be': doXYZ,
...
}
actions.get(url.netloc, doNothing)()
或者在它解析配置文件用於構建xyz_targets
或actions
行之後
就像是以下幾點:
(url.netloc == "www.youtube.com") or ("youtu.be") or ("soundcloud.com") or ("instagram.com")
並且它總是產生True
,因爲如果將非空字符串用作真值謂詞。
使用in
代替如下:
if url.netloc in ("www.youtube.com", "youtu.be", "soundcloud.com", "instagram.com", ..):
或者使用可以使用or
,但它需要你重複or url.netloc ==
多次。
類似想法的任何變種我不認爲這意味着你的想法。那永遠是真的 –
你的代碼微妙地不正確。假設'url.netloc'不等於「www.youtube.com」,則Python將繼續執行條件的下一部分(在第一個「或」之後),並將「youtu.be」評估爲*布爾*,這將**總是**爲真。 –