Python的隐秘世界:当变量开始玩捉迷藏

        你以为在Python中调用一个变量就像在房间里找东西?不妨看看这个令人抓狂的例子:

x = 10

def outer():
    x = 20
    def inner():
        print(x)  # 这个x到底是谁?
    return inner

func = outer()
func()  # 输出什么?

        这不是普通的变量查找,而是一场精心设计的捉迷藏游戏。今天我们将化身代码侦探,破解Python世界的三大空间谜案。

一、变量查找的密室逃脱

        Python变量查找遵循LEGB法则,像侦探破案一样逐层搜索:

  • Local(本地):案发第一现场

  • Enclosing(闭包):隔壁房间

  • Global(全局):整栋大楼

  • Built-in(内置):城市基础设施

def crime_scene():
    clue = "指纹"
    
    def suspect_room():
        clue = "凶器"
        
        def murder_spot():
            print(clue)  # 找到哪个clue?
        
        return murder_spot
    
    return suspect_room()

detective = cri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值