Skip to content Skip to sidebar Skip to footer

Python 3 - Substituting Functions For Print()

I'm trying to write a replacement for the print() function; I'd like to understand what Python 3 is doing here. Consider the following two Python 3 source files: file.py: def in_a_

Solution 1:

The name lookup is roughly builtins shared by all modules, each module's own global namespace, and then subsequently nested function/class namespaces. The print function lives in builtins, and is thus visible in all modules by default.

The assignment print = printA in minimal.py adds a new name print to minimal's global namespace. This means minimal.print shadows builtins.print inside the minimal module. The change is not visible in any other module, since each has a separate module-global namespace.

To change print across all modules, re-assign builtins.print.

import builtins

_real_print = builtins.print

def printA(*args, **kwargs):
    _real_print("A: ", end="")
    _real_print(*args, **kwargs)

builtins.print = printA

Post a Comment for "Python 3 - Substituting Functions For Print()"