Почему одна переменная класса не определена в понимании списка, а другая?
Я просто прочитал ответ на этот вопрос:Доступ к переменным класса из списка понимания в определении класса
Это помогает мне понять, почему следующий код приводит кNameError: name 'x' is not defined
:
class A:
x = 1
data = [0, 1, 2, 3]
new_data = [i + x for i in data]
print(new_data)
NameError
происходит потому, чтоx
не определен в специальной области для понимания списка. Но я не могу понять, почему следующий код работает без каких-либо ошибок.
class A:
x = 1
data = [0, 1, 2, 3]
new_data = [i for i in data]
print(new_data)
Я получаю вывод[0, 1, 2, 3]
, Но я ожидал эту ошибку:NameError: name 'data' is not defined
потому что я ожидал, как и в предыдущем примере, имяx
не определен в области понимания списка, так же как и названиеdata
не будет определен слишком в области понимания списка.
Не могли бы вы помочь мне понять, почемуx
не определяется в области понимания списка, ноdata
является?