缩短重复相同条件但使用不同变量的代码行

  • 本文关键字:变量 代码 条件 python
  • 更新时间 :
  • 英文 :


我的脚本中有这些行代码:

if x.name or x.number or x.address:
if x.name and x[0] == x.name:
result = x.name
elif x.number and x[0] == x.number:
result = x.number
elif x.address and x[0] == x.address:
result= x.address

这是在一个函数中,它接受列表varx并检查这些属性(name, number, address)是否已在脚本的其余部分中被分配到其他地方。

在这种情况下,x可以具有分配给它的所有三个属性,但是当函数被调用时,只有其中一个当前正在处理。x[0]用于检查当前正在调用的是哪个。

现在我不喜欢我这样写,因为我只是重复的行,但与其他属性。我想不出怎么把这篇文章写短一点,有人有主意吗?

假设您的原始代码正常工作-这将是等效的:

if (x[0] in [x.name, x.number, x.address]) and x[0]:
result = x[0]
for attr in ['name','number','address']:
if x[attr] and x[0] == x[attr]:
result = x[0]
break

这是一个简单的方法。如果将来属性改变了,你只需要改变列表,它就会正常工作。

最新更新