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 respostas

Eu 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

questionAnswers(5)

yourAnswerToTheQuestion