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

Python函数内部的局部变量和全局变量

解释:

number = 10             # 定义全局变量
def test_one():print(number)       # 在函数内部访问全局变量number=number+1     # 在函数内部直接修改全局变量【加上这句会报错】
test_one()
print(number)           # 在函数外部访问全局变量

 

 

这是 Python 中全局变量与局部变量作用域的知识点。

 

1. 代码为什么会报错?

 
先看你的代码: 
number = 10            # 全局变量def test_one():print(number)      # 访问全局变量 ✅ 没问题number += 1        # 修改全局变量 ❌ 报错!test_one()
print(number) 
 
运行后会报错:  
UnboundLocalError: local variable 'number' referenced before assignment
 
 

2. 核心原理 

Python 有一条铁律: 
在函数内部,只要对变量进行赋值操作,Python 就会把这个变量当作局部变量,而不是全局变量。
 
 
过程是这样的: 
  1. 你写了 number += 1
  2. Python 扫描函数体,发现有赋值,就判定:
    • number局部变量
     
  3. 然后执行 print(number)
    • 但此时局部变量 number 还没被创建
    • 所以报:局部变量在赋值前被引用
     
 

3. 为什么只 print 不报错,一加赋值就报错?

 
  • print(number):Python 找不到局部变量,会向上找全局变量,正常运行。
  • 一旦出现 number = ...number += ...
  •  Python 就认定它是局部变量,整个函数内都按局部变量处理。
 

4. 正确写法:使用 global 声明

 
如果你想在函数内部修改全局变量,必须加 global
 
 
number = 10def test_one():global number       # 声明:我要用全局变量 numberprint(number)number += 1         # 现在可以修改了 ✅test_one()
print(number)  # 11
 
 

5. 一句话总结

 
  • 只访问全局变量:不用 global
  • 要修改全局变量:必须加 global 声明
  • 否则 Python 会把它当成局部变量,导致报错

 

http://www.jsqmd.com/news/543999/

相关文章:

  • 3个关键步骤:Smiley Sans字体技术优化指南
  • 2026年湖南学生西服定制团购品牌推荐,靠谱商家有哪些 - 工业设备
  • 如何快速掌握终端数字雨效果:完整跨平台配置指南
  • LightGBM在工业时序预测中的突破性应用:从痛点解决到价值创造
  • 奥康斯移动阳光房价格多少,定制服务是否靠谱 - 工业设备
  • YOLOv7剪枝实战:5种高效剪枝方法对比与代码实现
  • RWKV7-1.5B-g1a参数详解:为何默认top_p=0.3更适合中文生成?语言分布实证
  • OpCore Simplify:智能配置引领黑苹果系统搭建革命,新手友好的零代码解决方案
  • Qwen3-Reranker-0.6B效果惊艳:跨时区新闻事件(英文报道→中文摘要)匹配
  • 用LSTM预测股价翻车了?手把手教你用Tushare+PyTorch复现,并分析结果不理想的5个原因
  • Wan2.2-I2V-A14B惊艳效果:支持复杂prompt理解的长时序连贯视频生成能力
  • 分析膜结构汽车棚厂家哪家靠谱,山东、安徽、河南等地优质之选有哪些 - 工业推荐榜
  • feishu2md:飞书文档转Markdown的技术实现与架构解析
  • 告别DWA!用TEB局部规划器让你的ROS机器人学会‘倒车入库’(附多机编队避障实测对比)
  • 想找好用的厂区膜结构汽车棚厂家,费用怎么算? - myqiye
  • 卡证检测矫正模型行业落地:公安档案数字化中卡证图像标准化实践
  • HDMI设备开发必看:EDID/E-EDID数据结构全解析(附实战代码)
  • coze-loop新手指南:无需配置,开箱即用的代码优化工具
  • Llama-3.2V-11B-cot部署教程:双卡4090下11B模型加载耗时优化
  • ARM嵌入式开发:寄存器操作与函数指针实战
  • 大疆 阿里v2滑块算法分析
  • FModel:虚幻引擎资源解析的技术革新与实践指南
  • 分析2026年株洲西服定制,私人订制按效果图做可行吗 - mypinpai
  • 5个核心技巧:掌握Drawflow流程图库的高级定制与实战应用
  • Wan2.2-I2V-A14B高算力适配:RTX4090D显存调度策略深度解析
  • Swin2SR部署实战:基于Docker的免配置环境搭建
  • 明日方舟智能助手:3大核心特性+4类实用场景+1套进阶方案,解放双手轻松游戏
  • Gemma-3-12b-it本地部署教程:从CUDA配置到流式回答的完整步骤
  • 如何用ImageGlass解决专业图像浏览的三大核心痛点?开源图像查看器的全面解决方案
  • 从PDMS到多层薄膜:辐射冷却材料设计的成本与性能平衡实战(基于Nelder-Mead算法)