Zagnieżdżony zakres rozumienia listy
Najlepszym sposobem na wyjaśnienie mojego pytania jest przykład:
example.py:
class A(object):
integers = [1, 2, 3]
singles = [i for i in integers]
class B(object):
integers = [1, 2, 3]
pairs = [(i, j) for i in integers for j in integers]
Kiedy uruchamiam to w python 2, działa dobrze, ale w Pythonie 3 otrzymujęNameError
dla klasyB
(ale nie klasaA
):
$ python example.py
Traceback (most recent call last):
File "example.py", line 6, in <module>
class B(object):
File "example.py", line 8, in B
pairs = [(i, j) for i in integers for j in integers]
File "example.py", line 8, in <listcomp>
pairs = [(i, j) for i in integers for j in integers]
NameError: global name 'integers' is not defined
Dlaczego tylko klasaB
podnieść aNameError
i dlaczego tylko w Pythonie 3?