gpt4 book ai didi

python - 为什么像 `str = str(...)` 这样的代码会导致 TypeError,但只是第二次?

转载 作者:IT老高 更新时间:2023-10-28 20:24:15 27 4
gpt4 key购买 nike

我有一些类似的代码:

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

为什么会发生这种情况,我该如何解决?


如果您在交互式 session 中遇到了这样的问题,并且您想在不重新启动解释器的情况下解决问题,请参阅 How to restore a builtin that I overwrote by accident? .

最佳答案

代码在哪里:

global str
str = str(parameter)

您正在重新定义 str() 的含义。 str 是字符串类型的内置 Python 名称,你不想改变它。

为局部变量使用不同的名称,并删除 global 语句。

请注意,如果您在 Python REPL 中使用了这样的代码,那么对全局 str 的赋值将持续存在,直到您对其进行处理为止。你可以重启解释器,或者del str。后者之所以有效,是因为 str 实际上是 not 默认情况下定义的全局变量 - 相反,它通常在后备中找到(builtins 标准库模块,在启动时专门导入并赋予全局名称 __builtins__)。

关于python - 为什么像 `str = str(...)` 这样的代码会导致 TypeError,但只是第二次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6039605/

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