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

提高代码可读性,使python脚本更加优雅,python,if-statement,refactoring,switch-statement,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 下线 url.netloc == "www.youtube.com" or "youtu.be" or "soundcloud.com" or "instagram.com" 情况如下: (

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

  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
,因为如果用作谓词,非空字符串将被视为真值

在中使用
,如下所示:

if url.netloc in ("www.youtube.com", "youtu.be", "soundcloud.com", "instagram.com", ..):
或者,use可以使用
,但它要求您重复多次
或url.netloc=

以下行

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
,因为如果用作谓词,非空字符串将被视为真值

中使用
,如下所示:

if url.netloc in ("www.youtube.com", "youtu.be", "soundcloud.com", "instagram.com", ..):

或者,use可以使用
,但它需要您重复多次
或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_目标的配置文件
操作

我想最简单的是:

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_目标的配置文件
操作

,我不认为这意味着你所认为的意思。这总是正确的,你的代码是非常微妙的错误。假设
url.netloc
不等于“www.youtube.com”,Python将继续执行条件的下一部分(在第一个
之后),并将“youtu.be”作为布尔值进行计算,该布尔值始终为真。我不认为这意味着你认为它的意思。这总是正确的,你的代码是非常微妙的错误。假设
url.netloc
不等于“www.youtube.com”,Python将继续执行条件的下一部分(在第一个
之后),并将“youtu.be”作为布尔值计算,该值始终为真。