我正在尝试更改 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 文件中更改此函数是否会对我的其他文件产生影响。
拜托,如果您有任何可以帮助我的想法,请留在下面。
一只萌萌小番薯
相关分类