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