2017-04-20 14 views
-1

をキーワードとして、簡単なラムダはのpythonは、ここでラムダ関数

var= lambda x: x*x 
print(var(4)) 

は、単純な私は数学を完了するために、変数の使用にVARをラムダオブジェクトを格納表現です。

  1. 私の質問:

    私は、関数のラムダのようにキーワードとして引数を使用して、特定のタスクこのコードで

私はTypeError例外を取得プリフォームするためにそれらを適切に使用していることを作成するにはどうすればよい:「STR」をオブジェクトは呼び出し可能ではありません。

def test1(**kwargs): 

     for fart in kwargs: 

      print(fart) #output is == key 
      fart(4) #fart(4)==TypeError 

    test1(key=lambda x: x*x) 
+1

なぜあなたの要素はおならと呼ばれていますか? LOL –

+0

私はOPがその作業をしようと数時間悩まされたと思います。より厳しい変数名を自分自身で使用したでしょう:) –

+0

私は、変数内に4GB以上のデータを保持しようとした後に 'r'をインクルードしなければならないと思いました – inspectorG4dget

答えて

2

kwargsdictであるため、このエラーが発生しています。あなたのケースでは、この辞書は次のようになります。

{'key': lambda x: x*x} 

あなたはdictを反復する場合ので、あなたが本当にkwargsの場合には、文字列(および文字列は呼び出し可能ではありません)され、キーを反復処理しています。

あなたが本当にラムダで取得したい場合は、あなたがそのキーでkwargs内の値にアクセスする必要があります。もちろん

for fart in kwargs: 
    print(fart) 
    print(kwargs[fart[](4)) 

、これを行うための簡単な方法があります:

for fart, shart in kwargs.items(): 
    print(fart) 
    print(shart(4)) 
1

kwargsは辞書です。辞書を反復すると、キー値が得られます。

あなたが反復WHNは、あなたがすべてのキーのためのラムダ関数が予想される場合だけitems()values()を使用します。

for fart in kwargs: 
    print(kwargs[fart](4)) 

または値上:

for fart in kwargs.values(): 
    print(fart(4)) 

もっと合理的にあなたのラムダを呼び出すために必要なものを、キーを使用することですkey

def test1(**kwargs): 
    print(kwargs["key"](4)) 

test1(key=lambda x: x*x) 

ここにそれが表示されます16

関連する問題