gpt4 book ai didi

python - 在函数内使用模块时出现 UnboundLocalError?

转载 作者:行者123 更新时间:2023-12-04 16:59:25 26 4
gpt4 key购买 nike

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

使用 stringpunctuation就像上面的这个函数一样,一切正常。

然后我想根据几个较少的标点符号检查数据。所以我
已更改 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com