我有一些代码,例如:
def example(parameter):
global str
str = str(parameter)
print(str)
example(1)
example(2)
第一次调用 example
有效,但第二次我收到如下错误:
Traceback (most recent call last):
File "test.py", line 7, in <module>
example(2)
File "test.py", line 3, in example
str = str(parameter)
TypeError: 'str' object is not callable
为什么会发生这种情况,我该如何解决?
如果您在交互式会话中遇到了这样的问题,并且您想在不重新启动解释器的情况下解决问题,请参阅 如何恢复我意外覆盖的内置函数? .
原文由 P‘sao 发布,翻译遵循 CC BY-SA 4.0 许可协议
代码说:
您正在重新定义
str()
的含义。str
是字符串类型的内置Python名称,你不想改变它。为局部变量使用不同的名称,并删除
global
语句。请注意,如果您在 Python REPL 中使用了这样的代码,那么对全局
str
的分配将持续存在,直到您对其进行处理。您可以重新启动解释器,或del str
。后者之所以有效,是因为str
实际上 不是 默认定义的全局变量 - 相反,它通常在后备中找到(builtins
标准库模块,它在启动时专门导入并给出全局名称__builtins__
)。