在python中重置打印功能

时间:2016-03-09 14:12:08

标签: python python-3.x

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

在shell中我做了

>>> print = 1

现在我试图打印像

这样的东西
>>> print ("hello")

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

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

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

2 个答案:

答案 0 :(得分:10)

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

del print

Python通过当前作用域(在包含本地和任何父作用域的函数中)查找print,然后是全局变量,然后是built-in namespace,后者是{{1}功能生活。

答案 1 :(得分:5)

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

  1. 退出python并重新启动它。这保证有效。 :-)
  2. 按照@MartijnPieters的建议删除您创建的变量。
  3. 更改新变量以引用builtins.print功能。
  4. 对于最后一个选项,您需要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