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

やあ。追加の変数を使用せずに関数を 2 回呼び出さないようにするにはどうすればよいですか。

4

4 に答える 4

12

このように比較を連鎖させることができます

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

これは次のように機能します

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

ただし、foo(a) は 1 回だけ評価されます。

于 2013-03-14T11:26:15.630 に答える
7

追加の変数を使用せずに関数を 2 回呼び出さないようにするにはどうすればよいですか。

ここでは、単に置き換えることができます

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 に答える