我的脚本中有这些行代码:
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
这是一个简单的方法。如果将来属性改变了,你只需要改变列表,它就会正常工作。