我有一种情况,我试图将一些大的,复杂的python例程移植到线程环境.
我希望能够在每个调用的基础上将函数print声明的输出重定向到其他地方(logging.Logger具体而言).
我真的不想修改我正在编译的代码的源代码,因为我需要保持与调用这些模块的其他软件的向后兼容性(这是单线程的,并通过简单地抓取写入的所有内容来捕获输出sys.stdout).
我知道最好的选择是做一些重写,但我真的没有选择.
编辑 -
或者,有什么方法可以覆盖打印的本地定义以指向不同的功能?
然后,我可以定义本地print = system print,除非被kwarg覆盖,并且只涉及在每个例程的开头修改几行.
在Python2.6(和2.7)中,您可以使用
from __future__ import print_function
Run Code Online (Sandbox Code Playgroud)
然后,您可以像更改print()Python3一样更改代码以使用该函数
这允许您创建一个名为print的模块全局或本地函数,它将优先于内置函数使用
例如.
from __future__ import print_function
def f(x, print=print):
print(x*x)
f(5)
L=[]
f(6, print=L.append)
print(L)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1295 次 |
| 最近记录: |