1. ホーム
  2. python

[解決済み] Pythonのラムダを理解し、複数の引数を渡すために使用する。

2022-12-14 09:22:41

質問

ラムダに関するあらゆる文献を読んでも、自分のやりたいことを実現する方法がわかりません。

みんな例題を使っています。

lambda x, y : x + y

なぜ xy の前に : ? また、複数の引数を返すようにするにはどうしたらよいでしょうか?

のようにします。

self.buttonAdd_1 = Button(self, text='+', command=lambda : self.calculate(self.buttonOut_1.grid_info(), 1))

これは問題なく動作します。しかし、次のコードはそうではありません。

self.entry_1.bind("<Return>", lambda : self.calculate(self.buttonOut_1.grid_info(), 1))

エラーが出ます。

TypeErrorです。() は引数を取りません (1つ与えられました)

どのように解決するのですか?

<ブロッククオート

なぜ、'x' と 'y' の両方を ':' の前に記述する必要があるのでしょうか?

なぜならラムダは(概念的には)関数と同じで、ただインラインで書かれているだけだからです。あなたの例は、次のものと同じです。

def f(x, y) : return x + y

のように名前に縛られることなく、ただ f .

また、複数の引数を返すようにするにはどうすればいいのでしょうか?

関数と同じような方法です。できればタプルを返すとよいでしょう。

lambda x, y: (x+y, x-y)

リストでも、クラスでも、何でもいい。

のあるものは self.entry_1.bind の件は、Demosthenexが回答するはずです。