如果函数是打印语句还是将其写在.txt文件中,我需要确定函数的输出。有没有办法在Python中执行此操作?我想也许hasattr(' myfunction',' str ')可能有效,但事实并非如此。
功能示例:
def x():
print('dog')
def y():
open("file.txt", "w").write("dog")
答案 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并调用该函数。