为了账号安全,请及时绑定邮箱和手机立即绑定

更改内置函数 - 打印

更改内置函数 - 打印

回首忆惘然 2023-09-26 16:41:19
我正在尝试更改 python 的 print 内置函数。我试图实现此目的的原因是因为我的应用程序有一个详细的 sys.argv,并且我想使用 print 来控制台输出消息,无论详细信息是 True 还是 False。我尝试使用创建新函数,但出现递归错误:>>> 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我尝试过使用 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尽管使用了这些选项,但似乎没有一个能正常工作。我需要所有模块文件都可以访问新的打印功能,而无需每次都导入它。这就是为什么我尝试更改内置函数,但我不确定在init .py 文件中更改此函数是否会对我的其他文件产生影响。拜托,如果您有任何可以帮助我的想法,请留在下面。
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

你几乎已经拥有了。调用old_print你的新函数:


def new_print(*args, **kwargs):

    old_print('print:', *args, **kwargs)


old_print = print

print = new_print


查看完整回答
反对 回复 2023-09-26
  • 1 回答
  • 0 关注
  • 44 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信