当前位置: 首页 > 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.xdnf.cn/news/923293.html

相关文章:

  • BeckHoff--MES数据交互 MQ TRANCE API (MQ 追溯 API - 系统概述和命令参考)
  • YOLOv8 升级之路:主干网络嵌入 SCINet,优化黑暗环境目标检测
  • gawk 指令
  • NPOI Excel用OLE对象的形式插入文件附件以及插入图片
  • 元器件基础学习笔记——结型场效应晶体管 (JFET)
  • 实战二:开发网页端界面完成黑白视频转为彩色视频
  • 15-Oracle 23ai Vector Search Similarity Search-向量相似性和混合搜索-实操
  • Golang——10、日志处理和正则处理
  • 自制操作系统(五、重写引导部分和C语言的使用)
  • 【数据结构】详解算法复杂度:时间复杂度和空间复杂度
  • 【论文解读】DeepSeek-R1
  • 一款“短小精悍的”手机录屏软件
  • 【C++】类型转换
  • 抖音怎么下载视频?抖音怎么无水印下载别人的视频
  • 蓝凌的流程引擎队列分发器
  • Python whl安装包简介与制作完全指南
  • 【优选算法】前缀和
  • Windows 下端口占用排查与释放全攻略
  • LeetCode-413. 等差数列划分
  • Go深入学习延迟语句
  • 【QT】输入类控件 详解
  • 嵌入式里的时间魔法:RTC 与 BKP 深度拆解
  • 数据通信基础
  • 迷宫问题(一)(C++版本)
  • @ExceptionHandler 默认无法拦截 Aspect(切面)中抛出的异常
  • centos7编译安装LNMP架构
  • docker安装RabbitMQ
  • 一些因子的解释
  • 人工智能--AI换脸
  • iview框架主题色的应用