当前位置: 首页 > news >正文

nonlocal 与global关键字

Python精进系列:nonlocal 关键字详解_python nonlocal-CSDN博客 

nonlocal 关键字用于在嵌套函数中声明一个变量为“非局部变量”,即该变量属于外层函数的作用域,而非当前函数的局部作用域

def outer():
    x = "外层值"
    
    def inner():
        nonlocal x  # ✅ 声明 x 是外层变量
        x = "内层修改值"
        print("内层函数:", x)
        
    inner()
    print("外层函数:", x)

outer()
 

 

传统方案(全局变量) 

count = 0

def counter():
    global count
    count += 1
    return count

print(counter())  # 1
print(counter())  # 2
 

 

改进方案(使用 nonlocal

def make_counter():
    count = 0
    
    def counter():
        nonlocal count
        count += 1
        return count
    
    return counter

cnt = make_counter()
print(cnt())  # 1
print(cnt())  # 2
 

 

x = 10  # 全局变量
def modify():
   global x  # 声明x为全局变量
   x = 20    # 修改全局x的值
modify()
print(x)  # 输出20
 

http://www.lqws.cn/news/209197.html

相关文章:

  • vue3 创建图标 按钮
  • rl_sar实现sim2real的整体思路
  • Jetpack Compose瀑布流实现方案
  • 设计模式-观察着模式
  • 行为型设计模式之Interpreter(解释器)
  • C++常用的企业级日志库
  • DeepSeek-R1-0528:开源推理模型的革新与突破
  • 在Ubuntu22.04 系统中安装Docker详细教程
  • 低代码平台前端页面表格字段绑定与后端数据传输交互主要有哪些方式?华为云Astro在这方面有哪些方式?
  • 银行卡二三四要素实名接口如何用PHP实现调用?
  • Linux操作系统故障应急场景及对应排查方法
  • Linux 系统中的算法技巧与性能优化
  • code-server安装使用,并配置frp反射域名访问
  • 【PCIe总线】 -- PCI、PCIe相关实现
  • Java高级 | 【实验七】Springboot 过滤器和拦截器
  • WPF 播放器(AudioPlayer 2025)
  • vue · 插槽 | $slots:访问所有命名插槽内容 | 插槽的使用:子组件和父组件如何书写?
  • mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
  • 【数据结构】6. 时间与空间复杂度
  • STM32学习笔记:外部中断(EXTI)原理与应用详解
  • 如何使用Jmeter进行压力测试?
  • NLP学习路线图(三十一): 迁移学习在NLP中的应用
  • 知识改变命运?如何有规划的学好计算机专业?
  • 元器件基础学习笔记——结型场效应晶体管 (JFET)
  • MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
  • 力扣-17.电话号码的字母组合
  • DL00335-基于深度学习YOLOv11的煤矸石检测含完整数据集
  • Qt Test功能及架构
  • 分贝计的校准方法和频率介绍
  • Protobuf 中的类型查找规则