掘金 人工智能 07月13日 10:44
苦练Python第13天:变量作用域、全局变量与局部变量
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了Python中变量作用域的核心概念,区分了局部变量和全局变量的区别,并解释了它们在代码中的可见性和生命周期。文章详细介绍了如何通过`global`关键字修改全局变量,并通过实际案例说明了变量作用域对程序设计的影响。此外,还提到了LEGB法则,帮助读者理解Python解释器查找变量的顺序。最后,文章给出了最佳实践,强调了局部变量的优先使用,以及慎用全局变量的建议,以帮助开发者编写更清晰、更易于维护的代码。

🔍 **作用域的定义**:作用域决定了变量的可访问区域,Python主要分为局部作用域和全局作用域两种。

🧪 **局部变量**:在函数内部定义的变量,仅在该函数内部可见。例如,在函数`greet()`内部定义的变量`name`,在函数外部是无法访问的。

🌍 **全局变量**:在所有函数之外定义的变量,可在整个脚本中访问。例如,定义在函数外部的变量`message`,可以在函数内部被访问。

⚠️ **修改全局变量**:在函数内部可以读取全局变量,但若要修改全局变量,需要使用`global`关键字。例如,在函数`increment()`中使用`global count`来修改全局变量`count`的值。

🧠 **变量查找LEGB法则**:Python按照LEGB顺序解析变量:Local(局部)、Enclosing(外层函数)、Global(全局)、Built-in(内置)。

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

原文链接:dev.to/therahul_gu…
作者:Rahul Gupta
译者:倔强青铜三

前言

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

欢迎来到 100天Python挑战 的第13天!
今天,我们直击 变量作用域 这一核心概念。
你是否在函数里定义变量后,外部却无法访问?这就是作用域问题。
弄懂 局部全局 的差异,才能写出干净、无 Bug 的代码。


今日速览


🔍 作用域是什么?

作用域 决定 变量可被访问的区域
Python 主要分两类:


🧪 1. 局部变量

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

def greet():    name = "Alice"    print("Hello", name)greet()print(name)  # ❌ 错误:name 未定义

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


🌍 2. 全局变量

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

message = "Welcome!"def greet():    print(message)greet()print(message)  # ✅ 正常运行

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

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

错误示例:

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

正确示例:

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

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


🎯 实战:用户登录状态

# 全局会话状态is_logged_in = Falsedef login():    global is_logged_in    is_logged_in = Truedef logout():    global is_logged_in    is_logged_in = Falselogin()print("User logged in?", is_logged_in)  # True

🧠 变量查找 LEGB 法则

Python 按 LEGB 顺序解析变量:


🧼 最佳实践


🧠 今日复盘

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

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Python 变量作用域 局部变量 全局变量 LEGB法则
相关文章