在Python 3中,将整数转换为字符串时调用str()方法会出现奇怪的问题?

15

为什么这会给我一个错误?

>>> variable = str(21)

Traceback (most recent call last):
  File "<pyshell#101>", line 1, in <module>
    variable = str(21)
TypeError: 'str' object is not callable

4
你有没有把一个变量命名为 "str"? - Wooble
2
你是否定义了另一个字符串变量并将其赋值给变量 str?因为这样做会导致遮蔽内置函数 str(),例如:str = 'test'; print(str(124)) - mouad
2
这些踩票是不恰当的。我们大多数人在学习时都使用了内置函数。看看有多少代码示例中出现了 list = [...]。我更新了这个问题的标题。 - smci
2个回答

41

仅凭代码本身不会造成错误。例如,我刚刚尝试了这个:

~ $ python3.2
>>> variable = str(21)
>>> variable
'21'

你的代码中某处定义了str =其他内容,掩盖了内置定义的str。移除它后,你的代码将正常工作。


14

因为您可能通过将自己的变量命名为 str 来覆盖了内置的 str 函数。


我认为你可能是对的。我关闭了我的IDLE会话(其中加载了许多以前在网上找到的代码示例),现在我可以正常使用内置的str函数了。其中一个早期的代码示例一定对BIF str()做了一些奇怪的事情。谢谢! - blueplastic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接