应该使用链接调用来支持更明确的分配吗?

den*_*uan 3 python stringio python-2.7

我们的团队必须如下所示:

这个:

buf = StringIO.StringIO()
gzip.GzipFile(fileobj=buf, mode='wb').write(foo)
...
Run Code Online (Sandbox Code Playgroud)

还有这个:

buf = StringIO.StringIO()
tmp = gzip.GzipFile(fileobj=buf, mode='wb')
tmp.write(foo)
...
Run Code Online (Sandbox Code Playgroud)

哪一个更pythonic?

编辑:我已经尝试/ catch来做错误处理工作,但哪一个更pythonic?

eca*_*mur 11

GzipFile完成后需要关闭对象,因此单行不起作用.相反,使用上下文管理器表达式:

buf = StringIO.StringIO()
with gzip.GzipFile(fileobj=buf, mode='wb') as tmp:
    tmp.write(foo)
Run Code Online (Sandbox Code Playgroud)

单行gzip.GzipFile(fileobj=buf, mode='wb').write(foo)是非常危险的,因为它取决于在GzipFile表达式结尾处被垃圾收集,以便流被刷新.如果未能发生(例如使用Jython),则buf不会包含预期结果.

  • 更重要的是,关闭`GZipFile`实例对于最终确定压缩和写入必要的CRC值至关重要! (3认同)