Я просто прочитал ответ на этот вопрос: Доступ к переменным класса из понимания списка в определении класса
Это помогает мне понять, почему следующий код приводит к 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 есть?