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

news2024/12/26 0:00:49

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

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

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

在这里插入图片描述

文章目录

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

作用域的概念

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

局部变量

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

def my_function():
    # 定义局部变量
    x = 10
    print("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 = 20

def 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 = 30

def my_function():
    # 使用global声明全局变量
    global z
    z = 40
    print("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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1605701.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

G2D图像处理硬件调用和测试-基于米尔-全志T113-i开发板

本篇测评由电子工程世界的优秀测评者“jf_99374259”提供。 本文将介绍基于米尔电子MYD-YT113i开发板的G2D图像处理硬件调用和测试。 MYC-YT113i核心板及开发板 真正的国产核心板,100%国产物料认证 国产T113-i处理器配备2*Cortex-A71.2GHz ,RISC-V 外置…

UE4 拍摄、保存并浏览相册

效果: 1.新建CameraActor类 2.修改截图保存路径 3.编写BP_Camera蓝图 注意路径 Save Image函数要在执行拍照和BeginPlay事件执行一次 按钮执行拍摄事件 3.编写UMG蓝图 技巧:让Index加1、减1循环赋值 4.把BP_Camera挂在玩家上

renren-fast-vue-master常见报错和解决

前言: 因为最近博主的实习,所以在小破站写那个分布式微服务电商的项目,什么什么商城就不说了,大家都明白,相信大家像我一样,在使用renren-fast-vue-master的时候都很是头痛,项目还没开始就结束了…

2024年第十六届“华中杯”(B题)大学生数学建模挑战赛| 时间序列,滑动窗口 | 数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 让我们来看看华中杯 (B题)! CS团队倾…

C语言链表讲解

链表的概念与结构 链表是一种物理存储非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 如图所示: 链表通过指针域把一个一个节点链接起来,而最后一个节点的指针域指向NULL,表示到头了。 链表与顺序表的对比 链表是一种…

[疑难杂症2024-003]如何判断一张没有头信息的dcm图像,是否是压缩图像?

本文由Markdown语法编辑器编辑完成. 1. 前言: DCM格式,是医学图像领域里面的通用格式.DCM图像一般分为两大部分,一部分是TAG信息,一部分是像素. 而TAG信息,一般又会分为两部分,如下图所示, 是…

C++:STL-stack,queue,deque

栈和队列 1.栈和队列文档理解2.为什么没有迭代器3.Container到底是什么4.模拟实现源码--使用适配器模式5.deque5.1定义5.2底层结构头插头删随机访问扩容 5.3缺陷5.4为什么选择deque作为stack和queue的底层容器 1.栈和队列文档理解 我们通过其上的介绍发现了几个点: …

Python分析之3 种空间插值方法

插值是一个非常常见的数学概念,不仅数据科学家使用它,而且各个领域的人们也使用它。然而,在处理地理空间数据时,插值变得更加复杂,因为您需要基于几个通常稀疏的观测值创建代表性网格。 在深入研究地理空间部分之前,让我们简要回顾一下线性插值。 为了演示的目的,我将使…

单链表的基本操作实现:初始化、尾插法、头插法、输出单链表、求表长、按序号查找、按值查找、插入结点、删除结点。

1.参考学习博文(写的相当好的文章): http://t.csdnimg.cn/AipNl 2.关于我的总结: 定义单链表: typedef struct LNode {Elemtype data;struct LNode* next; }LNode; data用来存放元素值,next用来指向后…

Vue 项目build打包发布到giteepages ,首页正常显示,其他路由页面报错404的解决方法

直接上解决方法: 打包之后dist上传之后,还要新创一个.spa文件,注意!是 .spa 有个. 点,如下图 一般这样就可以开始部署了,然后开启giteepages服务。如果出现了首页正常显示,其他页面显示…

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

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

第二部分 Python提高—GUI图形用户界面编程(三)

简单组件学习 Radiobutton 单选按钮、Checkbutton 复选按钮和canvas 画布 文章目录 Radiobutton 单选按钮Checkbutton 复选按钮canvas 画布 Radiobutton 单选按钮 Radiobutton 控件用于选择同一组单选按钮中的一个。Radiobutton 可以显示文本,也可以显示图像。 f…

基于XML配置bean(二)

文章目录 1.工厂中获取bean1.静态工厂1.MyStaticFactory.java2.beans.xml3.测试 2.实例工厂1.MyInstanceFactory.java2.beans.xml3.测试 3.FactoryBean(重点)1.MyFactoryBean.java2.beans.xml3.测试 2.bean配置信息重用继承抽象bean1.beans.xml2.测试 3.…

《系统分析与设计》实验-----在线书店系统 需求规格说明书 哈尔滨理工大学PLUS完善版

文章目录 需求规格说明书1.引言1.1编写目的1.2项目背景1.3定义1.4参考资料 2.任务概述2.1目标2.2运行环境2.3条件与限制 3.数据描述3.1静态数据3.2动态数据3.3数据库介绍3.4数据词典3.5数据采集 4.功能需求4.1功能划分4.2功能描述…

transformer架构详细详解

一、transformer的贡献 transformer架构的贡献:该架构只使用自注意力机制,没有使用RNN或卷积网络。且可以实现并行计算,加快模型训练速度。 (将所有的循环层全部换成:multi-headed self-attention) 二、t…

Day13-Python基础学习之数据分析案例

数据分析案例 data_define.py # 数据定义的类 class Record:def __init__(self, date, order_id, money, province):self.date dateself.order_id order_idself.money moneyself.province province ​def __str__(self):return f"{self.date}, {self.order_id}, {se…

OpenGL:图元

OpenGL的图元 点 GL_POINTS: 将顶点绘制成单个的点 线 GL_LINES:将顶点用于创建线段,2个点成为一条单独的线段。如果顶点个数是奇数,则忽略最后一个。 顶点:v0, v1, v2, v3, … , vn,线段:v0-v1, v2-v3, v4-v5, … , vn-1 - vn GL_LINE_STRIP:将顶点用于创建线段,…

驱动创新成长,智能费控助力国央企财务数智化升级

如果说中小企业是我国国民经济的毛细血管,那么国央企就是承载着我国市场发展的主动脉,是国民经济的重要支柱。今年以来,面对复杂严峻的国内外发展环境,国央企锚定目标,深入开展提质增效专项行动,打出深化改…

基础算法之二分算法

前言 本次博客,将要介绍二分算法的基本原理以及如何使用,深入浅出 二分可以针对整型以及浮点型接下来对其讲解希望对小白有所帮助吧 整型的二分法 一般要在一个数组中猜出一个数是否存在我们可以遍历一遍整个数组,判断是否存在&#xff0…

python学习笔记B-07:序列结构之列表--列表的常用函数和方法

以xx_函数名(列表名)的形式出现的是函数;以xx_列表名.xx_方法名的形式出现的是方法。 列表常用函数如下: len():计算列表元素数量 max():获取列表元素最大值 min():获取列表元素最小值 sum():计算列表中各元素之和 列表常用方法如…