提高代码可读性,让python脚本更加优雅

时间:2013-10-31 08:04:18

标签: python if-statement refactoring switch-statement

为避免这种情况,有哪些代码结构/编程技术:

  if url.netloc  == "www.youtube.com" or "youtu.be" or "soundcloud.com or //
  "instagram.com" or "vine.co" or ETC ETC
     do XYZ

2 个答案:

答案 0 :(得分:5)

以下行

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", ..):

或者,使用可以使用or,但它需要您多次重复or url.netloc ==

答案 1 :(得分:1)

我猜,最简单的是:

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_targetsactions