苦练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 查找顺序,调试更轻松

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

相关推荐
韩立学长7 分钟前
【开题答辩实录分享】以《基于python的奶茶店分布数据分析与可视化》为例进行答辩实录分享
开发语言·python·数据分析
C嘎嘎嵌入式开发18 分钟前
(一) 机器学习之深度神经网络
人工智能·神经网络·dnn
Aaplloo21 分钟前
【无标题】
人工智能·算法·机器学习
大模型任我行22 分钟前
复旦:LLM隐式推理SIM-CoT
人工智能·语言模型·自然语言处理·论文笔记
tomlone28 分钟前
AI大模型核心概念
人工智能
无敌最俊朗@42 分钟前
C/C++ 关键关键字面试指南 (const, static, volatile, explicit)
c语言·开发语言·c++·面试
2401_831501731 小时前
Python学习之day03学习(文件和异常)
开发语言·python·学习
可触的未来,发芽的智生1 小时前
触摸未来2025.10.06:声之密语从生理构造到神经网络的声音智能革命
人工智能·python·神经网络·机器学习·架构
Zwb2997921 小时前
Day 24 - 文件、目录与路径 - Python学习笔记
笔记·python·学习
hui函数1 小时前
python全栈(基础篇)——day03:后端内容(字符串格式化+简单数据类型转换+进制的转换+运算符+实战演示+每日一题)
开发语言·后端·python·全栈