避免在python中if else条件

时间:2017-08-21 10:26:02

标签: python if-statement

我有两个参数,例如a,b。我有一种情况,如果两个参数(a,b)都可以有值,或者两者都没有值,或者它们中的任何一个都有值。

示例:

第一个条件:a = 10,b = 20

第二个条件:a =无,b = 20

第三个条件:a = 10,b =无

第四个条件:a =无,b =无

如果存在值,我必须执行一些操作并记录它。目前我在做如下, 有没有有效的方法来做到这一点?

if not a:
    print "Value a not present"
if not b:
   print "Value b not present"

# Do operation for A
a = a+1 
# Do operation for B
b = b+1

2 个答案:

答案 0 :(得分:1)

您可以将所有内容折叠为两行:

a = a + 1 if (a is not None) else (a or print('a not present'))
b = b + 1 if (b is not None) else (b or print('b not present'))

如果abNone,则会执行print。这是一个演示:

In [692]: a, b = 10, None

In [693]: a = a + 1 if (a is not None) else (a or print('a not present'))
     ...: b = b + 1 if (b is not None) else (b or print('b not present'))
     ...: 
b not present

In [694]: a, b
Out[694]: (11, None)

在一天结束时,如果您问我要使用什么,我绝对不会推荐上述内容。比较一下:

def check_and_increment(val):
    if val is None:
         return print('Not found!')

    return val + 1

a = check_and_increment(a)
b = check_and_increment(b)

上面的回答。哪个更具可读性?

答案 1 :(得分:0)

如果所有参数的逻辑相同,那么仅使用args怎么样?

def func(*args):
    args = [value + 1 if value else value for value in args]

否则,您可以减少条件数,但必须至少使用一个。