更改内置函数 - 打印

我正在尝试更改 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_print

TypeError: '_io.TextIOWrapper' object is not callable


尽管使用了这些选项,但似乎没有一个能正常工作。


我需要所有模块文件都可以访问新的打印功能,而无需每次都导入它。这就是为什么我尝试更改内置函数,但我不确定在init .py 文件中更改此函数是否会对我的其他文件产生影响。


拜托,如果您有任何可以帮助我的想法,请留在下面。


回首忆惘然
浏览 45回答 1
1回答

一只萌萌小番薯

你几乎已经拥有了。调用old_print你的新函数:def new_print(*args, **kwargs):&nbsp; &nbsp; old_print('print:', *args, **kwargs)old_print = printprint = new_print
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python