NameError em compreensões aninhadas [duplicado]
Esta questão já tem uma resposta aqui:
Acessando variáveis de classe a partir de uma compreensão de lista na definição de classe 5 respostasEu tenho esse código em um arquivo
class Sudoku(dict):
COLUMNS = [
{(x, y) for y in xrange(9)} for x in xrange(9)
]
Quando eu corropython broken.py
, Eu recebo o traceback:
Traceback (most recent call last):
File "U:\broken.py", line 1, in <module>
class Sudoku(dict):
File "U:\broken.py", line 3, in Sudoku
{(x, y) for y in xrange(9)} for x in xrange(9)
File "U:\broken.py", line 3, in <setcomp>
{(x, y) for y in xrange(9)} for x in xrange(9)
NameError: global name 'x' is not defined
[Finished in 0.1s with exit code 1]
Eu realmente não vejo o problema aqui. Não éx
definido na compreensão?
O que é mais estranho é como isso parece ser executado sem um erro quando colado diretamente no interpretador python ...
EDITAR: Isso funciona se eu usar uma compreensão de lista em vez de uma compreensão definida