【发布时间】:2015-10-03 21:47:10
【问题描述】:
我有一个方法可以根据输入检测应该打开什么文件,打开文件,然后返回文件对象。
def find_and_open(search_term):
# ... logic to find file
return open(filename, 'r')
我喜欢这种方式,因为它对调用者隐藏了最多的实现。你给它你的标准,它会吐出文件对象。如果您仍然要打开它,为什么还要打扰字符串路径?
但是,在其他 Python 项目中,我倾向于看到这样的方法返回文件路径的字符串,而不是文件对象本身。然后在最后一分钟打开文件,读取/编辑并关闭文件。
我的问题是:
从性能的角度来看,传递文件对象是否会带来更多开销?我想无论它指向什么引用都是一个引用,但也许解释器中发生了一些事情,使字符串引用比文件引用更快地传递?
从纯粹“Pythonic”的角度来看,返回文件对象或字符串路径(然后尽可能晚地打开文件)是否更有意义?
【问题讨论】:
-
您为什么不使用
timeit或profile模块并自己找出答案? -
我更喜欢返回字符串路径,并使用
with open(...) as ...打开文件
标签: python coding-style