【问题标题】: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 不会以某种方式破坏上下文管理器,而且它似乎没有

标签: python python-3.8


【解决方案1】:

with 块内返回并不危险。第一种写法。

【讨论】:

  • 我假设第一种方法也会关闭freturns?
  • @BruceWayne 是的,这是使用上下文管理器的主要原因之一 - 它会为您处理所有清理工作。
猜你喜欢
  • 2016-04-24
  • 2019-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多