5
 >>> def foo(a):
        print "called the function"
        if(a==1):
            return 1
        else:
            return None
>>> a=1

>>> if(foo(a) != None and foo(a) ==1):
    print "asdf"

called the function
called the function
asdf

你好。我怎样才能避免在不使用额外变量的情况下调用该函数两次。

4

4 回答 4

12

您可以像这样链接比较

if None != foo(a) == 1:

这就像

if (None != foo(a)) and (foo(a) == 1):

除了它只评估 foo(a) 一次。

于 2013-03-14T11:26:15.630 回答
7

我怎样才能避免在不使用额外变量的情况下调用该函数两次。

在这里,您可以简单地替换

if(foo(a) != None and foo(a) ==1):

if foo(a) == 1:

foo(a) != None是多余的:如果foo(a) == 1,则保证不是None

于 2013-03-14T11:25:51.533 回答
1

以下声明

if foo(a) == 1:

将处理这两种情况。

于 2013-03-14T11:26:32.293 回答
1

如果 foo(a)==1 ,那么 foo(a) 不会是 None,

因此将您的代码简化为:

if foo(a):
    print('asdf')
于 2013-03-14T11:43:50.703 回答