在python中重置打印功能

Gar*_*rry 2 python python-3.x

我刚开始研究Python并需要帮助.

在壳中我做了

>>> print = 1
Run Code Online (Sandbox Code Playgroud)

现在,当我试图打印任何类似的东西

>>> print ("hello")
Run Code Online (Sandbox Code Playgroud)

我得到了"TypeError: 'int' object is not callable,显然是因为现在打印一个int

我能够弄清楚,如果我重新启动shell,打印开始再次正常工作.

我想知道如何print将其重置为原始状态,即打印到控制台而不重新启动shell?

Mar*_*ers 10

您创建了一个掩盖内置名称的全局.使用del删除新的全球; 然后Python会再次找到内置函数:

del print
Run Code Online (Sandbox Code Playgroud)

Python print通过当前作用域查找(在包含本地和任何父作用域的函数中),然后是全局变量,然后是内置命名空间,而后者是print()函数所在的后者.


agh*_*ast 5

您已print通过创建具有相同名称的变量来"屏蔽"内置函数.你可以做三件事之一:

  1. 退出python并重新启动它.这保证有效.:-)
  2. 按照@MartijnPieters的建议删除您创建的变量.
  3. 更改新变量以引用该builtins.print函数.

对于最后一个选项,您需要import builtins.

>>> print = 1
>>> print("Hello")
>>> Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

>>> import builtins
>>> dir(builtins)
>>> ['ArithmeticError', 'AssertionError', 'AttributeError', 
...
'print',
...
'tuple', 'type', 'vars', 'zip']

>>> print=builtins.print
>>> print("Hello")
>>> Hello
Run Code Online (Sandbox Code Playgroud)