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

函数返回值、变量作用域、global关键字深度拆解

博客导语

局部变量修改全局变量、函数多返回值、return与exit区别是新手高频报错点。本篇结合内存栈帧讲解变量查找规则,区分global/nonlocal使用边界,补齐函数返回值底层内存逻辑。


一、函数返回值全用法

1.单返回值与多返回值

Python原生支持多返回值,底层自动打包为元组,接收时可解包。无return语句时,默认返回None。

def get_pos(): return 100,200 # 底层等价于return (100,200) x,y = get_pos() # 自动解包接收

2.return核心特性

执行return后,会立即终止当前函数,后续代码永远不执行;return可以单独空写,直接终止函数,返回None。


二、变量作用域三层划分

  1. 局部作用域(L):函数内部定义的变量,仅当前函数栈帧生效,函数调用结束立即销毁

  2. 全局作用域(G):函数外部、模块顶层定义的变量,整个模块内生效

  3. 内置作用域(B):Python内置函数、关键字,如print、len,全局任意位置生效

变量查找规则(LEGB)

局部→外层嵌套→全局→内置,由内向外逐层查找,找不到直接抛出NameError


三、global关键字使用场景与禁区

1.只读全局变量(无需global)

函数内部仅读取全局变量,不做修改,不需要任何关键字,直接使用即可

2.修改全局变量(必须global)

函数内部想要重新赋值、修改全局不可变变量,必须先用global声明,否则解释器会判定为新建局部变量,出现冲突报错。

count = 0 def add_count(): global count count += 1 add_count() print(count) # 1

3.禁区:可变全局变量无需global

全局列表、字典,函数内部修改内部元素,不需要global,因为没有修改变量指向的内存地址,只是原地修改数据。


四、新手必踩报错:局部变量引用前赋值

a = 10 def test(): print(a) a = 20 # 解释器提前识别局部赋值,判定a为局部变量,读取时报错

解决方案:读取前使用global声明

http://www.cnnetsun.cn/news/2924389.html

相关文章:

  • 终极Git可视化工具:GitAhead让你的版本控制一目了然
  • Linux 进程管理与 OOM Killer 调优:从被动杀进程到主动内存治理
  • 如何永久保存你的微信记忆?WeChatMsg让聊天记录成为珍贵数字资产
  • 13ft Ladder终极指南:三步轻松绕过任何付费墙,免费阅读所有付费文章
  • 086、Claude Code 无头模式:在 CI/CD 流水线中的 headless 使用与参数配置
  • Claude 进军化学领域:NMR 预测和解析表现亮眼,助力化学家提升工作效率
  • MAA明日方舟助手:一键解放双手的智能游戏伴侣,让日常任务自动化完成
  • MPC185安全协处理器:动态描述符与加密通道机制深度解析
  • 杰理之PC模式连接部分老的笔记本会识别不了【篇】
  • Web鲜牛奶订购系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • Python PDF处理神器pypdf:从安装到实战的完整指南
  • GEE新手避坑指南:LandSat8 C1/C2、T1/T2/RT、原始影像与地表反射率到底怎么选?
  • ShardingSphere实战:用JMeter压测Sharding-JDBC和Proxy,这几点性能损耗你得知道
  • 视觉中国向港交所递交H股上市申请
  • 360Controller实战指南:在macOS上完美使用Xbox控制器的完整方案
  • Platinum-MD:让尘封的MiniDisc音乐库在Windows、macOS、Linux三大平台重获新生
  • 如何快速掌握AsrTools:面向新手的终极语音转文字工具完整指南
  • 如何快速掌握Pine Script:从零基础到自动化交易的完整指南
  • 3分钟掌握Maid:你的移动AI助手如何一键部署本地大语言模型
  • 后端基础能力成长:从实习到落地的四个关键跃迁
  • 《星源纪》七境心法拆解:修心+成事终极操作手册
  • 终极免费资源嗅探:3分钟掌握猫抓Cat-Catch浏览器扩展的完整使用指南
  • 数据库索引设计的‘遗传学’:避免‘近亲’查询与利用‘杂交’优势提升性能
  • 从Kinect到iPhone:聊聊TOF、结构光这些深度相机技术,是怎么一步步走进我们生活的
  • NSK超重载滚珠丝杠W5020SS技术规格详解
  • UI-TARS桌面版终极指南:5分钟解锁自然语言自动化,彻底告别重复GUI操作
  • 戴森球计划8000+工厂蓝图:如何构建模块化星际生产系统
  • 国家级全领域硬核卡脖子痛点白皮书(连载目录·第一季+第二季 1–60)
  • Flashtool完整指南:拯救索尼Xperia设备的终极刷机解决方案
  • BongoCat终极指南:3分钟快速上手跨平台互动桌宠