有哪些代码结构/编程技术可以避免这种情况:
if url.netloc == "www.youtube.com" or "youtu.be" or "soundcloud.com or //
"instagram.com" or "vine.co" or ETC ETC
do XYZ
有哪些代码结构/编程技术可以避免这种情况:
if url.netloc == "www.youtube.com" or "youtu.be" or "soundcloud.com or //
"instagram.com" or "vine.co" or ETC ETC
do XYZ
以下行
url.netloc == "www.youtube.com" or "youtu.be" or "soundcloud.com" or "instagram.com"
如下所示:
(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", ..):
或者使用 can use or
,但它需要您重复or url.netloc ==
多次。
我猜最简单的应该是:
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