2014-11-06 4 views
1

우리 실험실에서 펑터를 사용하고 대신 함수 클로저를 사용해야했습니다. 우리가 그때 내가 얼마나 레이블 ... 에 나중에 개발 된 방법을 결합하는 것Functors 대 Python의 함수 클로저

digit = command(self.add_character, text = number) 

label.bind('< Button-1 >', digit) 

다음 펑를 들어 우리는 셋업 같은 것을 찾고 결국 functools에서 명령으로 부분적인 수입 기능 폐쇄와 펑터가 아닌 이와 같은 것?

답변

1

당신은 익명의 기능을 결합하는 람다를 사용하십시오 :

label.bind('< Button-1 >', lambda ev: self.add_character(ev, text=number)) 

을 여기에, 나는 보통 이벤트 인수에 전달되는 라벨 콜백을 가정하고있다. 콜백이 전달되는 인수의 수를 조정해야 할 수도 있습니다. 그것은 이것은 단지 이벤트가 전달 될 것입니다.

number 값, 이상 폐쇄 된 functools.partial() 객체를 사용하는 경우 동안 number 값이 호출에 인수로 구속 될하는 tkinter 기반 GUI입니다.