在调用print函数时增加变量

时间:2018-09-04 11:28:27

标签: python python-2.7

是否有采取某种措施的方法,例如,每次调用Python内置的print()函数时都增加一个全局变量?我看过函数装饰器,但对如何为内置函数定义完全清楚。

2 个答案:

答案 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)