在“with”语句中返回是不是危险? [复制]
Posted
技术标签:
【中文标题】在“with”语句中返回是不是危险? [复制]【英文标题】:Is returning inside a 'with' statement dangerous? [duplicate]在“with”语句中返回是否危险? [复制] 【发布时间】:2021-02-04 16:52:53 【问题描述】:我需要返回一个文件的内容,这样做可以吗:
def foo(filePath):
with open(filePath) as f:
return json.load(f)
或者我应该这样做:
def foo(filePath):
with open(filePath) as f:
r = json.load(f)
return r
(当然我的函数是做其他事情的,这是一个玩具模型)
【问题讨论】:
@CeliusStingher 如果没有 OP 的更多澄清,我们不知道,但该线程可能是问题的一部分。我认为 OP 是在广泛询问,即是否还有其他类似的问题可能导致? (我会说它太宽泛了) @BruceWayne 重复的线程回答了这个问题,我只是想确定return
不会以某种方式破坏上下文管理器,而且它似乎没有
【参考方案1】:
在with
块内返回并不危险。第一种写法。
【讨论】:
我假设第一种方法也会关闭f
return
s?
@BruceWayne 是的,这是使用上下文管理器的主要原因之一 - 它会为您处理所有清理工作。以上是关于在“with”语句中返回是不是危险? [复制]的主要内容,如果未能解决你的问题,请参考以下文章