从 string
导入时模块,与解析函数一起使用。
from string import punctuation
def parsing_func(data):
if not any(i==v for i in data for v in punctuation.replace('_', '')):
print data
使用
string
的 punctuation
就像上面的这个函数一样,一切正常。然后我想根据几个较少的标点符号检查数据。所以我
已更改
parsing_func
对此:def parsing_func(data):
punctuation = punctuation.replace('_', '')
punctuation = punctuation.replace('()', '')
if not any(i==v for i in data for v in punctuation):
print data
但这会返回:
Traceback (most recent call last):
File "parser.py", line 58, in <module>
parsing_func(data)
File "ex.py", line 8, in parsing_func
punctuation = punctuation.replace('_', '')
UnboundLocalError: local variable 'punctuation' referenced before assignment
所以,我做了一个测试函数来检查
punctuation
:def test_func1():
print type(punctuation), punctuation
>>> <type 'str'> !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
打印出来很好,没有错误,并显示
type str
.最后,我试着拼凑print
和字符串操作一个接着一个。def test_func2():
print type(punctuation), punctuation
punctuation = punctuation.replace('_', '')
但现在
print
语句返回错误:Traceback (most recent call last):
File "parser.py", line 9, in <module>
test_func2()
File "parser.py", line 5, in test_func2
print type(punctuation), punctuation
UnboundLocalError: local variable 'punctuation' referenced before assignment
这是一个
namespace
错误以及为什么会 test_func2
打印而不是字符串操作时返回错误?
最佳答案
您正在分配给 punctuation
在您的函数内部,因此 Python 将其视为局部变量:因此它根本不使用全局名称。为作业使用不同的名称。
关于python - 在函数内使用模块时出现 UnboundLocalError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16124770/