在尝试使用Python解释器时,我不经意地将一个字符串分配给str
如下:
str = 'whatever'
在同一会话的稍后部分,我输入了另一个声明,并呼叫str()
,例如...
double_whatever = str(2) + ' * whatever'
...,并得到了错误TypeError: 'str' object is not callable
(而不是预期的输出'2 * whatever'
)。一个相关的SO答案有助于我快速发现自己犯的错误。
但是,我仍不清楚如何str()
在受影响的会话中修复对的呼叫。当然,我可以退出Python解释器并开始另一个会话,但是我很好奇如何避免这种情况。
到目前为止,我已经确认...
double_whatever = __builtins__.str(2) + ' * whatever' # => '2 * whatever'
...仍然可以像我想要的那样工作;但我不清楚如何重新获得不需要的__builtins__.
资格。
如何解决我的无用定义,str
使我str()
在Python解释器会话中的调用再次起作用?
只需删除您的覆盖str
:
del str
阅读http://www.diveintopython.net/html_processing/locals_and_globals.html,以获取有关Python如何为您找到变量的说明。
基本思想是,首先搜索定义变量的名称空间,因此,如果定义名称为的变量,则该名称空间str
将built-in
被覆盖。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句