如何修复str的重新定义?

时间:2015-06-02 08:38:19

标签: python string

尝试使用Python解释器,我无意中将字符串分配给str,如下所示:

str = 'whatever'

稍后在同一个会话中,我打了另一个声明,打电话给str(),说......

double_whatever = str(2) + ' * whatever'

...,并收到错误TypeError: 'str' object is not callable(而不是预期的输出'2 * whatever')。 related SO answer让我很快看到了我犯的错误。

但是,我仍然不清楚如何在受影响的会话中修复对str()的调用。当然我可以退出Python解释器并开始另一个会话,但我很好奇如何避免这种情况。

到目前为止,我已确认......

double_whatever = __builtins__.str(2) + ' * whatever'  # => '2 * whatever'

......仍然像我想要的那样工作;但我不清楚如何回到不需要__builtins__.资格。

如何修复str的无意重新定义,以便我在Python解释器会话中对str()的调用再次起作用?

1 个答案:

答案 0 :(得分:9)

只需删除覆盖的str

del str

阅读http://www.diveintopython.net/html_processing/locals_and_globals.html,了解Python如何为您找到变量。

基本思想是首先搜索定义变量的命名空间,因此如果定义名为str的变量,则会覆盖built-in一个变量。