首页 > 解决方案 > 缩短重复相同条件但变量不同的代码行

问题描述

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

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]是用于准确检查当前正在调用哪个。

现在我不喜欢我写这个的方式,因为我只是在重复这些行,但使用了其他属性。我想不出如何写这个更短,有人有想法吗?

标签: python

解决方案


假设您的原始代码有效 - 这将是等效的:

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

推荐阅读