首页 > 解决方案 > 函数内“finally”块的奇怪行为

问题描述

所以假设我有这样的功能:

def dummy():
    e = 1
    try:
        return e
    finally:
        e = 2

这个函数返回1,所以看起来return之前执行了语句finally,所以finally完全没有效果。

但是,当我这样声明函数时:

def dummy():
    e = {}
    e['x'] = 1
    try:
        return e
    finally:
        e['x'] = 2

返回值是{'x': 2},所以看起来像是finally之前执行的return

有人可以向我解释这里实际上发生了什么吗?

标签: python

解决方案


推荐阅读