确定函数输出为打印或写入

时间:2014-04-07 01:23:10

标签: python python-2.7 python-3.x

如果函数是打印语句还是将其写在.txt文件中,我需要确定函数的输出。有没有办法在Python中执行此操作?我想也许hasattr(' myfunction',' str ')可能有效,但事实并非如此。

功能示例:

def x():
    print('dog')

def y():
    open("file.txt", "w").write("dog")

1 个答案:

答案 0 :(得分:1)

打印函数可以采用更多的参数而不仅仅是要编写的内容:

print(*objects, sep=' ', end='\n', file=sys.stdout)

所以你可以为print编写一个包装器函数,它也会在列表中附加一个布尔值,如果文件是sys.stdout则为true,否则为false。

import sys

write_history = []
def write(*objects, sep=' ', end='\n', file=sys.stdout):
    print(*objects, sep=sep, end=end, file=file)
    write_history.append(file==sys.stdout)

然后只使用write函数,当你想测试函数的输出时,只需清除write_history并调用该函数。