Ошибка в добавлении элемента в список

Код:

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)
→ Ссылка