Найти - Пользователи
Полная версия: Closure - Реально?
Начало » Python для экспертов » Closure - Реально?
1
likin
РЕально ли на Питоне реализовать такой код.

Это ява скрипт.
obj.call(function(message){
alert(message);
})

Nested functions не совсем подходят….

def ex():
def event(widget):
print widget.get_text()
b = gtk.Button(“H”)
b.connect(“clicked”, event)


Не совсем подходит, так как этих ивентов може быть много….
Хотелось бы так…

b = gtk.Button(“H”)
b.connect(
“clicked”,
def (widget):
print widget.get_text()
)


Спасибо.
Андрей Светлов
Много событий=много вложенных функций. В чем проблема?
likin
def ex():
def event(widget):
print widget.get_text()
b = gtk.Button(“H”)
b.connect(“clicked”, event)

def event(widget):
print widget.get_text() + 2
b = gtk.Button(“H”)
b.connect(“clicked”, event)

def event(widget):
print widget.get_text()
b = gtk.Button(“H”)
b.connect(“clicked”, event)

Прокатит?
likin
А как заставить работать мой вариант?

b = gtk.Button(“H”)
b.connect(
“clicked”,
def (widget):
print widget.get_text()
)
bw
> Прокатит?
Да.

Другие варианты:
1. b.connect('clicked', lambda widget: widget.get_text())
2. b.connect('clicked', operator.methodcaller('get_text'))
3. b.connect('clicked', functools.partial(Button.get_text))

В Python нет анонимных функций, только лямбда.

..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB