苦练Python第13天:变量作用域、全局变量与局部变量

苦练Python第13天:变量作用域、全局变量与局部变量

原文链接:dev.to/therahul_gu...

作者:Rahul Gupta

译者:倔强青铜三

前言

大家好,我是倔强青铜三 。是一名热情的软件工程师,我热衷于分享和传播IT技术,致力于通过我的知识和技能推动技术交流与创新,欢迎关注我,微信公众号:倔强青铜三。欢迎点赞、收藏、关注,一键三连!!!

欢迎来到 100天Python挑战 的第13天!

今天,我们直击 变量作用域 这一核心概念。

你是否在函数里定义变量后,外部却无法访问?这就是作用域问题。

弄懂 局部全局 的差异,才能写出干净、无 Bug 的代码。


今日速览

  • 作用域究竟指什么
  • 局部变量 vs 全局变量
  • 作用域如何影响变量访问
  • global 关键字
  • 真实案例与最佳实践

🔍 作用域是什么?

作用域 决定 变量可被访问的区域

Python 主要分两类:

  • 局部作用域:函数内部声明的变量
  • 全局作用域:函数外部声明的变量

🧪 1. 局部变量

在函数内部定义的变量,仅在该函数内可见。

python 复制代码
def greet():
    name = "Alice"
    print("Hello", name)

greet()
print(name)  # ❌ 错误:name 未定义

name 只在 greet() 内部存活,外部无法触及。


🌍 2. 全局变量

在所有函数之外定义的变量,可在整个脚本中访问。

python 复制代码
message = "Welcome!"

def greet():
    print(message)

greet()
print(message)  # ✅ 正常运行

⚠️ 3. 在函数中修改全局变量

函数内可 读取 全局变量,但若要 修改 ,需加 global 关键字。

错误示例:

python 复制代码
count = 0

def increment():
    count += 1  # ❌ UnboundLocalError

正确示例:

python 复制代码
count = 0

def increment():
    global count
    count += 1

increment()
print(count)  # ✅ 1

仅在必要时使用 global,否则调试噩梦等着你。


🎯 实战:用户登录状态

python 复制代码
# 全局会话状态
is_logged_in = False

def login():
    global is_logged_in
    is_logged_in = True

def logout():
    global is_logged_in
    is_logged_in = False

login()
print("User logged in?", is_logged_in)  # True

🧠 变量查找 LEGB 法则

Python 按 LEGB 顺序解析变量:

  • L -- Local:当前函数内部
  • E -- Enclosing:外层函数(嵌套场景)
  • G -- Global:脚本顶层
  • B -- Built-in:Python 内置名称,如 printlen

🧼 最佳实践

  • ✅ 优先使用 局部变量,减少副作用
  • ✅ 用 函数参数返回值 传递数据
  • ⚠️ 慎用 global,除非万不得已
  • 🚫 绝不让局部与全局变量重名,避免混乱

🧠 今日复盘

  • 作用域决定变量生命周期
  • 局部变量安全,全局变量灵活
  • global 关键字可跨域修改
  • 牢记 LEGB 查找顺序,调试更轻松

最后感谢阅读!欢迎关注我,微信公众号倔强青铜三。欢迎点赞收藏关注,一键三连!!!

相关推荐
人工智能训练2 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
yaoming1682 小时前
python性能优化方案研究
python·性能优化
源于花海3 小时前
迁移学习相关的期刊和会议
人工智能·机器学习·迁移学习·期刊会议
码云数智-大飞3 小时前
使用 Python 高效提取 PDF 中的表格数据并导出为 TXT 或 Excel
python
DisonTangor4 小时前
DeepSeek-OCR 2: 视觉因果流
人工智能·开源·aigc·ocr·deepseek
薛定谔的猫19824 小时前
二十一、基于 Hugging Face Transformers 实现中文情感分析情感分析
人工智能·自然语言处理·大模型 训练 调优
发哥来了4 小时前
《AI视频生成技术原理剖析及金管道·图生视频的应用实践》
人工智能
biuyyyxxx4 小时前
Python自动化办公学习笔记(一) 工具安装&教程
笔记·python·学习·自动化
数智联AI团队4 小时前
AI搜索引领开源大模型新浪潮,技术创新重塑信息检索未来格局
人工智能·开源
极客数模5 小时前
【2026美赛赛题初步翻译F题】2026_ICM_Problem_F
大数据·c语言·python·数学建模·matlab