Ошибка в добавлении элемента в список
Код:
import keyboard
def print_pressed_keys(e):
key_name_spis=[e.name]
key_type_spis=[e.event_type]
key_time_spis=[e.time]
a = ' '.join(key_name_spis)
b = ' '.join(key_type_spis)
c = ' '.join(str(key_time_spis))
return a, b, c
Glob_name=[]
Glob_type=[]
Glob_time=[]
for Glob_ in range(len(Glob_name)+1):
Glob_name.append(a)
Glob_type.append(b)
Glob_time.append(c)
keyboard.hook(print_pressed_keys)
keyboard.wait('Ctrl+Shift')
Ошибка: Glob_name.append(a)
NameError: name 'a' is not defined
Что я делаю неправильно?
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Даже если сделать переменные a, b и c глобальными, в тот момент когда вы обращаетесь к ним внутри цикла функция print_pressed_keys еще не вызвана ни одного раза, поэтому в этих переменных будет пусто (фактически в этот момент они еще не будут существовать). Да и цикл не выполнится ни одного раза, потому что переменная Glob_name содержит пустой список.
Нужно добавлять значения в списки внутри самой функции:
import keyboard
Glob_name=[]
Glob_type=[]
Glob_time=[]
def print_pressed_keys(e):
key_name_spis=[e.name]
key_type_spis=[e.event_type]
key_time_spis=[e.time]
a = ' '.join(key_name_spis)
b = ' '.join(key_type_spis)
c = ' '.join(str(key_time_spis))
print(a, b, c)
Glob_name.append(a)
Glob_type.append(b)
Glob_time.append(c)
keyboard.hook(print_pressed_keys)
keyboard.wait('Ctrl+Shift')
print(Glob_name)
print(Glob_type)
print(Glob_time)