如何获取重写的python内置函数?

bga*_*ath 22 python python-2.7

当我在探索StackOverflow问题的解决方案,Python使用用户定义的字符串类时,我遇到了这种奇怪的python行为.

def overriden_print(x):
    print "Overriden in the past!"

from __future__ import print_function

print = overriden_print

print("Hello World!")
Run Code Online (Sandbox Code Playgroud)

输出:

Overriden过去!

现在,我怎样才能print在python解释器中找回原来的行为?

Mar*_*ers 42

只需删除覆盖:

del print
Run Code Online (Sandbox Code Playgroud)

这将从globals()字典中删除名称,让搜索回退到内置插件.

您也可以通过__builtin__模块直接引用内置功能:

import __builtin__

__builtin__.print('Printing with the original built-in')
Run Code Online (Sandbox Code Playgroud)