Python(九十四)变量的作用域

news/2025/2/12 18:34:05

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。
☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无论你是学生、职场人士还是对编程感兴趣的爱好者,都能从中受益。跟着我的学习笔记一起学习python吧。
🌙专栏目标:本专栏的目标是帮助我自己记忆、方便回顾所学知识以及帮助其他想学习python的小伙伴掌握Python编程语言的基本概念和技巧,并逐步提高我们的编程能力。通过这个专栏,我们将学会如何编写Python代码,理解各种数据类型、控制结构和函数,掌握常用的Python模块和库,以及应用Python解决实际问题。

⭐️ 专栏主要内容: 主要学习python的开发环境搭建;Python的基础知识,包括变量、数据类型、条件语句和循环等;python的数据结构和算法;python的函数和模块;python的文件处理等。
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
💑专栏主页:从零开始的Python入门之路

在Python代码中,作用域决定了变量在程序中的可见范围和生命周期。本文详细介绍Python中变量的作用域概念,包括局部变量和全局变量,并说明它们之间的区别。

在这里插入图片描述

文章目录

    • 作用域的概念
    • 局部变量
    • 全局变量
    • 全局变量与局部变量的区别
    • 作用域的注意事项

作用域的概念

作用域是指程序代码能访问该变量的区域。Python中的作用域分为局部作用域和全局作用域。局部作用域是指在函数内定义的变量,而全局作用域是指在函数外定义的变量。

局部变量

局部变量是在函数内部定义并使用的变量,它们的作用范围仅限于函数内部。当函数执行完毕后,局部变量的生命周期也就结束了。

def my_function():# 定义局部变量x = 10print("Inside function, x is:", x)# 调用函数
my_function()
# 尝试在函数外部访问局部变量
print("Outside function, x is:", x)  # 这里会报错,因为x是局部变量,无法在函数外部访问

运行结果:

Inside function, x is: 10
NameError: name 'x' is not defined

解释:在函数my_function内部定义了局部变量x,该变量只能在函数内部访问,尝试在函数外部访问时会报错。

全局变量

全局变量是在函数体外定义的变量,它们的作用范围包括函数内外,整个程序都可以访问到。

# 定义全局变量
y = 20def my_function():print("Inside function, y is:", y)# 调用函数
my_function()
# 在函数外部访问全局变量
print("Outside function, y is:", y)

运行结果:

Inside function, y is: 20
Outside function, y is: 20

解释:全局变量y在函数内部和外部都可以访问到,它的作用范围包括整个程序。

全局变量与局部变量的区别

  1. 局部变量只在函数内部有效,而全局变量可以在函数内外都有效。
  2. 局部变量和全局变量的命名可以相同,但在函数内部访问时,优先使用局部变量。
  3. 在函数内部,如果需要修改全局变量的值,可以使用global关键字进行声明。
# 定义全局变量
z = 30def my_function():# 使用global声明全局变量global zz = 40print("Inside function, z is:", z)# 调用函数
my_function()
# 在函数外部访问修改后的全局变量
print("Outside function, z is:", z)

运行结果:

Inside function, z is: 40
Outside function, z is: 40

解释:通过global关键字声明全局变量z,在函数内部修改了全局变量的值,并在函数外部访问时得到修改后的值。

作用域的注意事项

  1. 在函数内部可以访问全局变量,但不能修改其值,除非使用global关键字进行声明。
  2. 局部变量的作用范围仅限于函数内部,在函数外部无法访问。
  3. 全局变量的作用范围包括函数内外,整个程序都可以访问到。

参考链接:

  • Python 官方文档 - 变量作用域
  • Real Python - Python Scope & the LEGB Rule: Resolving Names in Your Code

https://dhexx.cn/news/show-5318053.html

相关文章

CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查)

CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查) 文章目录 CTFHUB-技能树-Web前置技能-文件上传(前端验证—文件头检查)前端验证—文件头检查题目解析 各种文件头标志 前端验证—文件头检查 题目考的是:pn…

面试题:JVM内存泄露服务器会有什么表现?怎么处理?

来源 阿里-技术-1面 我的回答 刚开始内存泄露少的时候,没什么影响,到后面,会频繁的进行Full GC。面试官:那CPU的表现是怎样的呢? 我:CPU使用率会很高,因为现在的垃圾回收器一般是使用的并行回…

[Win11·Copilot] Win11 系统更新重启后任务栏 Copilot 图标突然消失 | 解决方案

文章目录 前言Copilot介绍产生异常的原因解决方案总结 前言 在 Windows 11 的最新系统更新之后,一些用户报告了任务栏中 Copilot 图标消失的问题。这篇技术博文将为您提供详细的解决方案,帮助您恢复 Copilot 图标,并确保您能够继续享受 Copi…

解决宝塔的FTP无法使用被动模式

问题:宝塔安装完ftp管理软件之后,无法使用被动模式连接 解决: 提示: 如果还是不行,那么要看看防火墙和安全组有没有放行被动模式的端口,宝塔安装的pure-ftpd软件的被动模式端口默认是39000至400…

linux进阶篇:重定向和管道操作

Linux中的重定向和管道操作 llinux中的三种IO设备: 标准输入(STDIN),文件描述符号为:0,默认从键盘获取输入 标准输出(STDOUT),文件描述符号位:1,默认输出到显示终端 标准…

vim相关指令

vim的各种模式及其转换关系图 vim 默认处于命令模式!!! 模式之间转换的指令 除【命令模式】之外,其它模式要切换到【命令模式】,只需要无脑 ESC 即可!!! [ 命令模式 ] 切换至 [ 插…

【python从入门到精通】-- 第五战:函数大总结

🌈 个人主页:白子寰 🔥 分类专栏:python从入门到精通,魔法指针,进阶C,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~ 💡 坚持创作博文…

Pixverse:开启文生视频与图生视频新纪元

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

神经网络背后的数学原理

原文地址:The Math Behind Neural Networks 2024 年 3 月 29 日 深入研究现代人工智能的支柱——神经网络,了解其数学原理,从头开始实现它,并探索其应用。 神经网络是人工智能 (AI) 的核心,为…

生存分析机器学习

生存分析:时间背后的数据价值! 💡 生存分析是一种研究现象或物体随时间推移而发生的变化的方法,可广泛应用于金融、医疗、保险、交通等领域,比如预测疾病复发风险、评估投资产品收益、估算保险赔付概率等。通过挖掘数…