sys.displayhook și sys.breakpointhook în Python

Interpretorul (sys) Python 3.0+ (breakpointhook: 3.7+)

Funcțiile care afișează rezultatele în consola interactivă și cea apelată de breakpoint().

Sintaxă
sys.displayhook = functie(valoare)
sys.breakpointhook = functie(*args, **kwargs)

Ce face sys.displayhook și sys.breakpointhook

În consola interactivă, după fiecare expresie, Python apelează sys.displayhook(valoare), care afișează repr(valoare) (dacă nu este None) și o salvează în variabila _. O poți înlocui, de exemplu pentru afișare formatată.

breakpoint() apelează sys.breakpointhook(), care implicit pornește pdb (sau ce indică variabila PYTHONBREAKPOINT). Înlocuind-o, poți porni alt depanator sau dezactiva punctele de oprire.

Exemple

Exemplul 1: Funcții proprii

import sys, builtins
sys.displayhook([1, 2])
print(builtins._)

def afisare_frumoasa(valoare):
    if valoare is not None:
        print(f"=> {valoare!r} ({type(valoare).__name__})")
sys.displayhook = afisare_frumoasa
sys.displayhook(3.5)

sys.breakpointhook = lambda *a, **k: print("breakpoint ignorat", a, k)
breakpoint("x", motiv="test")

Rezultat

[1, 2]
[1, 2]
=> 3.5 (float)
breakpoint ignorat ('x',) {'motiv': 'test'}

Greșeli frecvente

  • Înlocuiești displayhook și te aștepți să schimbe ce afișează print. Afectează doar rezultatele expresiilor din consola interactivă.

Comenzi înrudite