On 2023-11-07 18:30, dn via Python-list wrote:
On 08/11/2023 06.47, Egon Frerich via Python-list wrote:
I've no idea why this happens. In a module there are lists and definitions:
...
["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])
File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 90,
in <listcomp>
["%s%s%s " % (i[fCONV_AUSRICHTG], i[fLG2], i[fTYP]) for i in Felder])
NameError: name 'fCONV_AUSRICHTG' is not defined
You see "Felder" and with "0 0 3 4" the correct value 4 for
fCONV_AUSRICHTG. But there is the NameError.
What does <listcomp> mean? Is there a change from python2 to python3?
Works for me (Python 3.11 on Fedora-Linux 37)
- both as a script, and simple/single import.
What happens when you extract the second dimension's definitions into a
module of their own, and import that (with/out less-sophisticated join)?
The missing detail is this line from the traceback:
File "/home/egon/Entw/Geldspur/geldspur/gui/GUI_Konfig.py", line 11,
in <module>
class GUIcfg:
Here's a small example that shows the problem:
----8<----
#!python3.11
# -*- encoding: utf-8 -*-
class Test:
hello = "hello"
print(hello)
print([[zero] for _ in range(4)])
----8<----
and its traceback:
----8<----
hello
Traceback (most recent call last):
File "C:\Projects\regex3\test_clipboard.py", line 4, in <module>
class Test:
File "C:\Projects\regex3\test_clipboard.py", line 7, in Test
print([zero for _ in range(4)])
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Projects\regex3\test_clipboard.py", line 7, in <listcomp>
print([zero for _ in range(4)])
^^^^
NameError: name 'zero' is not defined
----8<----
'zero' is visible in:
print(hello)
but not in:
print([zero for _ in range(4)])
Something to do with how scoping is implemented in comprehensions?
--
https://mail.python.org/mailman/listinfo/python-list