2016-06-15 5 views
0

どうすればこのことがわかりますか教えてください。出力は4ifとelseのpythonラムダ式

a=4 
b=7 

x=lambda: a if 1 else b 
lambda x: 'big' if x > 100 else 'small' 
print(x()) 
+2

あなたのご質問はありますか? これはif - elseまたはラムダ式についてですか? –

+1

ラムダ機能についてお読みください。 – GAVD

答えて

0

あなたxが常にあり、それは引数を取らず、if 1は常にTrueあるとして、4に等しいです。 次に、変数に割り当てられておらず、他の場所で使用されていないラムダ式があります。 最終的には、私が上記のように常に4であるxを印刷します。

P.S.私は強くお勧めしますUsing lambda FunctionsからDive into Python

0

あなたにそれを翻訳させてください。

xには、引数なしのlambda関数を割り当てます。 1は常にtrueと評価されるため、常に外部定義変数aが返され、4と評価されます。 次に、変数/アクセス名に割り当てない1つの引数xでラムダ関数を作成します。永遠に失われた。 次に、関数xを呼び出します。これは常にaを返します。出力は4

3

まずあり、それは何もしないとのこの行を削除してみましょう:

lambda x: 'big' if x > 100 else 'small' 

このlambda式が定義されているが呼び出されることはありません。それが引数であるという事実はxとも呼ばれ、残りのコードとは関係ありません。

はさんが残っているものを見てみましょう:それはコードが含まれているよう

a = 4 
b = 7 

x = lambda: a if 1 else b 

print(x()) 

ここxは関数となります。

真の結果、この場合には、他の条件偽結果

場合:それは後方に見ているifの表現形式を使用しなければならないので、lambdaフォームは、表現、ないステートメントを含めることができます条件は1です。これは常に真であるため、関数x()の結果は常にaの値であり、コードの最初の4に割り当てられています。効果的に、のようなx()行為:表現とは、このようなコードを理解する鍵である文との違いを理解する

def x(): 
    return a