Python - 检查函数是否返回值并捕获它(如果是)

时间:2018-03-22 20:18:06

标签: python if-statement

起初,这个问题可能看起来很愚蠢。但出于某种原因,我无法弄清楚我的生活。我有一些功能,我们称之为foofoo将返回False或唯一的字符串/数字,具体取决于传递给它的参数。我想检查foo是否返回除False之外的某个值,如果是,则处理它。如果它没有,我想继续使用传递给foo的不同参数做同样的事情。它可以按如下方式完成:

a = foo(1)
b = foo(2)
c = foo(3)
if a:
    print (a)
elif b:
    print (b + 3)
elif c:
    print ("abc" + c)

虽然这种方法有效但看起来很笨拙"对我来说。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

abc = [foo(i) for i in range(1,4)]
for x in abc:
    if x:
        print(x)
        break

甚至

for x in [foo(i) for i in range(1,4)]:
    if x:
        print(x)
        break

这比你的方法主观更好,但我个人更喜欢减少行数和单个集合而不是不同的变量名。原因是它们的可扩展性。

关于你的伪开关声明;没有没有更好的方法,虽然有些人可能更喜欢使用dict作为LUT。例如:

for i, x in enumerate(abc):
    if x:
        print([
            x,
            x+3,
            "abc"+x
        ][i])
        break