Попробуйте:
var funcs = [];
for (var i = 0; i < 3; i++) {
funcs[i] = (function(index) {
return function() {
console.log("My value: " + index);
};
}(i));
}
for (var j = 0; j < 3; j++) {
funcs[j]();
}
Изменить (2014):
Лично я думаю, что более поздний ответ @ Aust об использовании .bind
- лучший способ сделать это сейчас. Также есть _.partial
lo-dash / underscore, когда вам не нужно или хотите взаимодействовать с bind
thisArg
.
Хотя это специфично для X, вы можете установить пакет xautomation (apt-get install xautomation
в системах на базе Debian) и использовать xte
для имитации нажатия клавиш, например ::
from subprocess import Popen, PIPE
control_f4_sequence = '''keydown Control_L
key F4
keyup Control_L
'''
shift_a_sequence = '''keydown Shift_L
key A
keyup Shift_L
'''
def keypress(sequence):
p = Popen(['xte'], stdin=PIPE)
p.communicate(input=sequence)
keypress(shift_a_sequence)
keypress(control_f4_sequence)
Если вы находитесь в Windows, используйте Sendkeys , и если в Linux попробуйте указать здесь для xsendkeys или pexpect.
Рассмотрим python-uinput и evdev . Пример shift+a
с последним:
from evdev import uinput, ecodes as e
with uinput.UInput() as ui:
ui.write(e.EV_KEY, e.KEY_LEFTSHIFT, 1)
ui.write(e.EV_KEY, e.KEY_A, 1)
ui.syn()
Pythonic API для Linux uinput kernel module ...
Python-uinput - это интерфейс Python для Linux uinput модуль ядра, который позволяет подключать драйверы устройств userpace к ядру. На практике Python-uinput упрощает создание виртуальных джойстиков, клавиатур и мышей для произвольного создания произвольных входных событий ...
blockquote>
Если вы планируете использовать его в Linux, попробуйте библиотеку pyautogui . Для нескольких клавиш вам нужно будет использовать горячую клавишу, например:
pyautogui.hotkey('ctrl', 'c') # ctrl-c to copy
. Для меня это сработало - см. Здесь: Как передать нажатие клавиши (ALT + TAB) с помощью Popen.communicate (в Linux )?