Просто используйте обычный Python; в Python 2: использование
from __future__ import print_function
или использовать Python 3, и print()
является тогда функция. Вы можете переопределить эту функцию:
from __future__ import print_function
try:
# Python 2
from __builtin__ import print as builtin_print
except ImportError:
from builtins import print as builtin_print
def print(*args, **kw):
# do something extra with *args or **kw, etc.
builtin_print(*args, **kw)
Как и любой другой встроенной функции вы можете определить свою собственную функцию с тем же именем. В приведенном выше примере я использовал модуль __builtin__
/builtins
для доступа к оригиналу.
Если вы используете exec()
, вы можете передать в функцию print()
вы определили в качестве дополнительного имени в пространстве имен вы передаете в:
exec(code_to_execute, {'print': your_print_function})
Для Python 2, вы должны скомпилировать код первым, чтобы выключить оператор print
и включить функцию print()
; использовать compile()
function для создания объекта кода, чтобы перейти к exec
высказыванию:
import __future__
code_to_execute = compile(
code_to_execute_in_string, '', 'exec',
flags=__future__.print_function.compiler_flag)
Я использовал __future__
module, чтобы получить флаг правильного компилятора.
_Why_ вам нужно заменить функцию 'print'? Я уверен, что есть лучший/более простой способ добиться того, что вам нужно. –
Мне нужно выполнить код python во время выполнения. Я делаю это, используя команды compile и exec. Что-то, что я хотел бы сделать, это перенаправить все отпечатки (от этого кода) до некоторой предопределенной функции. (безопасность не нужна) –
Точнее, я разрабатываю веб-страницу, и мне нравится перенаправлять все отпечатки в браузер. Я сделал это, используя ограниченный питон, но я больше не могу его использовать. –