我正在嘗試更改 python 的 print 內(nèi)置函數(shù)。我試圖實(shí)現(xiàn)此目的的原因是因?yàn)槲业膽?yīng)用程序有一個(gè)詳細(xì)的 sys.argv,并且我想使用 print 來(lái)控制臺(tái)輸出消息,無(wú)論詳細(xì)信息是 True 還是 False。我嘗試使用創(chuàng)建新函數(shù),但出現(xiàn)遞歸錯(cuò)誤:>>> import builtins>>> def new_print(*args, **kwargs):... print('print:', *args, **kwargs)... >>> old_print = builtins.print>>> old_print(1)1>>> builtins.print = new_print>>> print(1)Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in new_print File "<stdin>", line 2, in new_print File "<stdin>", line 2, in new_print [Previous line repeated 996 more times]RecursionError: maximum recursion depth exceeded我嘗試過(guò)使用 sys.stdout():>>> import builtins>>> import sys>>> def new_print(*args, **kwargs):... sys.stdout(*args, **kwargs)... >>> old_print = builtins.print>>> old_print(1)1>>> builtins.print = new_print>>> print(1... )Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in new_printTypeError: '_io.TextIOWrapper' object is not callable盡管使用了這些選項(xiàng),但似乎沒(méi)有一個(gè)能正常工作。我需要所有模塊文件都可以訪問(wèn)新的打印功能,而無(wú)需每次都導(dǎo)入它。這就是為什么我嘗試更改內(nèi)置函數(shù),但我不確定在init .py 文件中更改此函數(shù)是否會(huì)對(duì)我的其他文件產(chǎn)生影響。拜托,如果您有任何可以幫助我的想法,請(qǐng)留在下面。
1 回答

一只萌萌小番薯
TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
你幾乎已經(jīng)擁有了。調(diào)用old_print你的新函數(shù):
def new_print(*args, **kwargs):
old_print('print:', *args, **kwargs)
old_print = print
print = new_print
添加回答
舉報(bào)
0/150
提交
取消