在“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 块内返回并不危险。第一种写法。

【讨论】:

我假设第一种方法也会关闭freturns? @BruceWayne 是的,这是使用上下文管理器的主要原因之一 - 它会为您处理所有清理工作。

以上是关于在“with”语句中返回是不是危险? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我想验证一条 SQL 语句,然后返回它是不是有效? [复制]

python的with关键字

在我的情况下,With(NoLock) 提示是不是危险?

请问SQL语句中的with tie代表的含义

C语言中,return语句怎么样返回一个数组?

Java Connection Pool 和 try-with 语句:连接实际上是关闭还是返回到池中?