Есть файл first.py, там
def sample(): print("123")
Есть файл second.py, там
from first.py import * def wrapper(func): def wrapped(arg): open("file", "w").write(arg) return(wrapped) print=wrapped(print) sample() print(" 22")
// мог ошибиться, пишу с телефона
Когда вызывается second.py, функция print внутри sample() сохраняет своё прежнее поведение. А внешний принт меняет.
Если заменить from blabla import * на import blabla; blabla.print=wrapped(print), то всё работает.