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

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

相关推荐
美狐美颜sdk32 分钟前
直播美颜SDK特效功能实战:从API调用到效果调优的全过程
人工智能·1024程序员节·美颜sdk·直播美颜sdk·第三方美颜sdk
sali-tec4 小时前
C# 基于halcon的视觉工作流-章56-彩图转云图
人工智能·算法·计算机视觉·c#
梦想画家4 小时前
基于PyTorch的时间序列异常检测管道构建指南
人工智能·pytorch·python
Elastic 中国社区官方博客5 小时前
在 Elasticsearch 中使用 Mistral Chat completions 进行上下文工程
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
一碗绿豆汤5 小时前
机器学习第二阶段
人工智能·机器学习
PythonFun5 小时前
OCR图片识别翻译工具功能及源码
python·ocr·机器翻译
用什么都重名5 小时前
DeepSeek-OCR 深度解析
人工智能·ocr·deepseek-ocr
河南骏6 小时前
RAG_检索进阶
人工智能·深度学习
虫师c6 小时前
Python浪漫弹窗程序:Tkinter实现动态祝福窗口教程
python·tkinter·动画效果·gui编程·弹窗效果
灯火不休时7 小时前
95%准确率!CNN交通标志识别系统开源
人工智能·python·深度学习·神经网络·cnn·tensorflow