我在Python 3.3.1 (win7)中遇到了一个奇怪的NameError。
代码如下:
import re
# ...
# Parse exclude patterns.
excluded_regexps = set(re.compile(regexp) for regexp in options.exclude_pattern)
# This is line 561:
excluded_regexps |= set(re.compile(regexp, re.I) for regexp in options.exclude_pattern_ci)
错误:
Traceback (most recent call last):
File "py3createtorrent.py", line 794, in <module>
sys.exit(main(sys.argv))
File "py3createtorrent.py", line 561, in main
excluded_regexps |= set(re.compile(regexp, re.I) for regexp in options.exclude_pattern_ci)
File "py3createtorrent.py", line 561, in <genexpr>
excluded_regexps |= set(re.compile(regexp, re.I) for regexp in options.exclude_pattern_ci)
NameError: free variable 're' referenced before assignment in enclosing scope
请注意,发生错误的561行是上面代码中的第二行。换句话说:re
不是一个自由变量。它只是正则表达式模块,可以在第一行中完全引用。
在我看来,对re.I
的引用似乎是问题的原因,但我不明白具体原因。
re.I
,错误是否会消失?我怀疑不会 - 问题很可能是由于您在问题中遗漏了某些内容所致。 - alexisre.I
,错误不会消失。 - robert