Python - привязать встроенную функцию к созданной функции - PullRequest
1 голос
/ 30 сентября 2019

Я хочу отслеживать последний раз, когда моя программа на python печатала что-то на консоли.

Я создал эту функцию:

def updateLastPrintTime():
    global lastPrintTime
    lastPrintTime = time.time()

И я вызываю ее после каждой печатиоператор.

Это прекрасно работает, однако у меня есть много операторов печати, и я хочу обновить lastPrintTime после каждой печати. ​​

Если print не был встроеннымФункция, это то, что я бы сделал:

def print():
    updateLastPrintTime()
    # rest of 'print' code ...

Но я не могу понять, как сделать это с помощью встроенной функции, особенно потому, что они написаны на C. Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Основываясь на этом ответе: Перегрузка печати Python

Вы можете сделать что-то вроде этого:

from __future__ import print_function

import time

last_print_time = time.time()  # initialise global var

try:
    import __builtin__
except ImportError:
    # Python 3
    import builtins as __builtin__

# overload the print function
def print(*args, **kwargs):
    global last_print_time
    last_print_time = time.time()  # update variable
    return __builtin__.print(*args, **kwargs)  # print the message
1 голос
/ 30 сентября 2019

Вы можете присвоить встроенным print другое имя, а затем переопределить print

_print = print
def print(*args, **kwargs):
    _print("Hello,", *args, **kwargs)

print("world!")

В качестве альтернативы, вы также можете получить встроенную печать из модуля builtins, например

import builtins
def print(*args, **kwargs):
    builtins.print("Hello,", *args, **kwargs)

print("world!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...