我有两个参数,例如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
答案 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'))
如果a
或b
为None
,则会执行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]
否则,您可以减少条件数,但必须至少使用一个。