是否有采取某种措施的方法,例如,每次调用Python内置的print()
函数时都增加一个全局变量?我看过函数装饰器,但对如何为内置函数定义完全清楚。
答案 0 :(得分:3)
如果有人尝试在Python 3.x中执行此操作,请考虑导入builtins
:
import builtins
v = 0
def print(*args, **kwargs):
global v
v += 1
builtins.print(*args, **kwargs)
print('foo') # foo
print(v == 1) # True
print(v == 2) # True
答案 1 :(得分:2)
在Python 2.x中,print
是一个声明,而不是一个函数,因此您无法更改其行为。您可以使用future statement首先使其成为一个函数(例如在Python 3.x中)并覆盖该函数:
from __future__ import print_function
counter = 0
_print = print # save a reference to the built-in print()
def print(*args, **kwargs):
global counter
counter += 1
_print(*args, **kwargs)