sourcetip

python에서 람다를 이해하고 여러 인수를 전달하는 방법

fileupload 2023. 5. 8. 22:23
반응형

python에서 람다를 이해하고 여러 인수를 전달하는 방법

람다에서 찾을 수 있는 모든 것을 읽고도 어떻게 하면 원하는 대로 할 수 있는지 아직도 이해할 수 없습니다.

모든 사용자가 다음과 같은 예를 사용합니다.

lambda x, y : x + y

왜 두 가지를 모두 명시해야 합니까?x그리고.y이전에:또한 여러 개의 인수를 반환하도록 하는 방법은 무엇입니까?

예:

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))

오류가 발생합니다.

유형 오류: () 인수를 사용하지 않습니다(1개 지정).

':' 앞에 'x'와 'y'를 모두 명시해야 하는 이유는 무엇입니까?

람다는 (개념적으로) 함수와 동일하기 때문에 인라인으로 작성됩니다.예제는 다음과 같습니다.

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

와 같은 이름으로 묶지 않고.f.

또한 여러 개의 인수를 반환하도록 하는 방법은 무엇입니까?

기능을 사용하는 것과 같은 방식입니다.튜플을 반환하는 것이 좋습니다.

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

목록이나 수업, 뭐 그런 거요

에 대한 것.self.entry_1.bind데모스테넥스가 답해야 합니다.

바인드는 항상 이벤트 매개 변수를 보내려고 합니다.시도:

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

매개 변수를 사용하고 사용하지 않습니다.

왜 두 가지를 모두 명시해야 합니까?x그리고.y이전에:?

함수 정의이기 때문에 함수가 어떤 매개 변수를 수용하고 어떤 순서로 수용하는지 알아야 합니다.식만 보고 변수 이름을 사용할 수는 없습니다. 이러한 이름 중 일부는 기존의 로컬 또는 글로벌 변수 값을 사용할 수 있으며, 이러한 이름을 사용하더라도 어떤 순서로 사용해야 할지 알 수 없기 때문입니다.

오류 메시지는 Tk가 인수 하나를 사용하여 람다를 호출하는 반면 람다는 인수를 허용하지 않도록 작성되었음을 의미합니다.논쟁이 필요하지 않다면, 하나만 받아들이고 사용하지 마세요. (Demosthenex가 코드를 가지고 있습니다, 저는 그것을 올렸을 것입니다.)

':' 앞에 'x'와 'y'를 모두 명시해야 하는 이유는 무엇입니까?

실제로 일부 상황(인수가 하나만 있는 경우)에서는 x와 y를 ":" 앞에 두지 않을 수 있습니다.

>>> flist = []
>>> for i in range(3):
...     flist.append(lambda : i)

하지만 람다의 i는 이름으로 묶일 것입니다, 그래서,

>>> flist[0]()
2
>>> flist[2]()
2
>>>

당신이 원하는 것과는 다릅니다.

언급URL : https://stackoverflow.com/questions/10345278/understanding-lambda-in-python-and-using-it-to-pass-multiple-arguments

반응형