python局部变量和全局变量

news/2025/3/18 14:58:27/

文章目录

  • 1.局部变量和全局变量
  • 2.局部变量
    • 2.1 局部变量的作用
    • 2.2 局部变量的生命周期
  • 3. 全局变量
    • 3.1 函数不能直接修改`全局变量的引用`
    • 3.2 在函数内部修改全局变量的值
    • 3.3 全局变量定义的位置
    • 3.4 全局变量命名的建议

1.局部变量和全局变量

(1)局部变量 是在 函数内部 定义的变量,只能在函数内部使用
(2)全局变量 是在 函数外部定义 的变量(没有定义在某一个函数内),所有函数 内部 都可以使用这个变量
(3)提示:在其他的开发语言中,大多 不推荐使用全局变量 —— 可变范围太大,导致程序不好维护!

2.局部变量

(1)局部变量 是在 函数内部 定义的变量,只能在函数内部使用
(2)函数执行结束后,函数内部的局部变量,就会被系统回收
(3)不同的函数,可以定义相同的名字的局部变量,但是 彼此之间 不会产生影响

2.1 局部变量的作用

  • 在函数内部使用,临时 保存 函数内部需要使用的数据
python">def demo1():num = 10print(num)num = 20print("修改后 %d" % num)def demo2():num = 100print(num)demo1()
demo2()print("over")

2.2 局部变量的生命周期

(1)所谓 生命周期 就是变量从 被创建被系统回收 的过程
(2)局部变量函数执行时 才会被创建
(3)函数执行结束后 局部变量 被系统回收
(4)局部变量在生命周期 内,可以用来存储 函数内部临时使用到的数据

3. 全局变量

(1)全局变量 是在 函数外部定义 的变量,在所有函数内部都可以使用这个变量

python"># 定义一个全局变量
num = 10def demo1():print(num)def demo2():print(num)demo1() //10
demo2()	//10

(2)注意:函数执行时,需要处理变量时 会:
首先 查找 函数内部 是否存在 指定名称 的局部变量如果有,直接使用
②如果没有,查找 函数外部 是否存在 指定名称 的全局变量如果有,直接使用
③如果还没有,程序报错!

3.1 函数不能直接修改全局变量的引用

(1)全局变量 是在 函数外部定义 的变量(没有定义在某一个函数内),所有函数 内部 都可以使用这个变量

提示:在其他的开发语言中,大多 不推荐使用全局变量 —— 可变范围太大,导致程序不好维护!

(2)在函数内部,可以 通过全局变量的引用获取对应的数据
(3)但是,不允许直接修改全局变量的引用(即不能使用赋值语句修改全局变量的值)

python">num = 10def demo1():# 只是定义了一个局部变量,不会修改到全局变量,只是变量名相同而已num = 100print(num)def demo2():print(num)demo1()//100
demo2()//10print("over")

注意:只是在函数内部定义了一个局部变量而已,只是变量名相同 —— 在函数内部不能直接修改全局变量的值

3.2 在函数内部修改全局变量的值

  • 如果在函数中需要修改全局变量,需要使用 global 进行声明
python">num = 10def demo1():# global 关键字,告诉 Python 解释器 num 是一个全局变量global numnum = 100print(num)def demo2():print(num)demo1()//100
demo2()//100print("over")

3.3 全局变量定义的位置

  • 为了保证所有的函数都能够正确使用到全局变量,应该 将全局变量定义在其他函数的上方
python">a = 10def demo():print("%d" % a)print("%d" % b)print("%d" % c)b = 20
demo()
c = 30

注意

  • 由于全局变量 c,是在调用函数之后,才定义的,在执行函数时,变量还没有定义,所以程序会报错!

3.4 全局变量命名的建议

  • 为了避免局部变量和全局变量出现混淆,在定义全局变量时,有些公司会有一些开发要求,例如:
  • 全局变量名前应该增加 g_ 或者 gl_ 的前缀

提示:具体的要求格式,各公司要求可能会有些差异


http://www.ppmy.cn/news/1580092.html

相关文章

计算机网络-1-1计算机网络体系结构

第一章计算机网络体系结构 绪论 《计算机网络》学什么?——数据如何通过网络正确、可靠地从A传送到B 【考纲内容】 (一)计算机网络概述 计算机网络的概念、组成与功能;计算机网络的分类; 计算机网络的性能指标 (二)计算机网…

网页制作代码html制作一个网页模板

制作一个简单而实用的网页模板:HTML基础入门 在数字时代,网页已成为信息展示和交流的重要平台。HTML(HyperText Markup Language)作为网页制作的基础语言,为开发者提供了构建网页的基本框架。本文将带你了解如何使用H…

【玩转正则表达式】Python、Go、Java正则表达式解释器的差异解析(附示例)

正则表达式作为文本处理的利器,在不同编程语言中的实现却暗藏玄机。Python、Go和Java作为主流开发语言,其正则引擎在语法支持、功能完整性和性能表现上存在显著差异。本文通过具体示例,揭示这些差异及应对策略。 一、原始字符串与转义差异 Python使用r""定义原始…

【从0到1搞懂大模型】RNN基础(4)

先说几个常用的可以下载数据集的地方 平台:kaggle(https://www.kaggle.com/datasets) 和鲸社区(https://www.heywhale.com/home) 阿里天池(https://tianchi.aliyun.com/) 其他:海量公…

Uniapp 从入门到精通:动画与过渡效果的运用

Uniapp 从入门到精通:动画与过渡效果的运用 前言一、引言1.1 Uniapp 简介1.2 动画与过渡效果的重要性二、Uniapp 基础回顾2.1 开发环境搭建2.2 基础语法与组件三、动画与过渡效果基础3.1 CSS 动画基础3.2 Vue 过渡效果四、Uniapp 中的动画与过渡效果高级应用4.1 使用 uni.crea…

MyBatis 如何解析 XML 配置文件和 SQL 映射文件

MyBatis 使用 SAX(Simple API for XML)解析器来解析 XML 文件,SAX 是一种基于事件驱动的 XML 解析方式,具有高效、低内存消耗的优点。 MyBatis 主要解析两种类型的 XML 文件: 核心配置文件 (mybatis-config.xml): 定…

UnitTest框架管理测试用例——python自动化测试

UnitTest框架 UnitTest是Python自带一个单元测试框架,常用它来做单元测试。 注意:对于测试来说,UnitTest框架的作用是 自动化脚本(用例代码)执行框架————(使用UnitTest框架来管理 运行多个测试用例的) 为什么使用UnitTest框架 能够组织多个用例去执…

Android视频渲染SurfaceView强制全屏与原始比例切换

1.创建UI添加强制全屏与播放按钮 2.SurfaceView控件设置全屏显示 3.全屏点击事件处理实现 4.播放点击事件处理 5.使用接口更新强制全屏与原始比例文字 强制全屏/原始比例 点击实现