尝试使用Python解释器,我无意中分配了一个字符串,str如下所示:
str = 'whatever'
Run Code Online (Sandbox Code Playgroud)
后来在同一场会议上,我打电话给另一个声明str(),说......
double_whatever = str(2) + ' * whatever'
Run Code Online (Sandbox Code Playgroud)
...,并得到错误TypeError: 'str' object is not callable(而不是预期的输出'2 * whatever').一个相关的SO答案帮助我快速看到了我犯的错误.
但是,我仍然不清楚如何str()在受影响的会话中修复呼叫.当然我可以退出Python解释器并启动另一个会话,但我很好奇如何避免这种情况.
到目前为止,我已确认......
double_whatever = __builtins__.str(2) + ' * whatever' # => '2 * whatever'
Run Code Online (Sandbox Code Playgroud)
...仍然像我想要的那样工作; 但我不清楚如何回到不需要__builtins__.资格.
如何修复我无意识的重新定义,str以便我str()在Python-interpreter会话中的调用再次起作用?
只需删除覆盖str:
del str
Run Code Online (Sandbox Code Playgroud)
阅读http://www.diveintopython.net/html_processing/locals_and_globals.html,了解Python如何为您找到变量.
其基本思路是,在这里你定义变量的命名空间首先搜索,因此,如果你定义一个名称的变量str,在built-in一个被覆盖.
| 归档时间: |
|
| 查看次数: |
498 次 |
| 最近记录: |