I suspect Nathan is seeing this problem at class scope. This is a well known issue:
>>> class C:
... from random import random
... out = [random() for ind in range(3)]
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in C
File "<stdin>", line 3, in <listcomp>
NameError: name 'random' is not defined
>>>
It is not related to the list comprehension, but to the class scope. See the last paragraph of https://docs.python.org/3/reference/executionmodel.html#resolution-of-names
But I agree with Zach about needing an example that fails. |