Python实战:全局变量与局部变量

一、引言

在Python编程中,全局变量和局部变量是两种常见的变量类型,它们在代码的执行过程中扮演着重要的角色。理解全局变量和局部变量的概念、作用域和生命周期对于编写清晰、可维护的代码至关重要。本文将详细介绍Python中的全局变量与局部变量,并通过具体代码示例展示它们的使用方法和注意事项。

二、Python的命名空间和作用域

在Python中,命名空间是变量和函数的集合,它们在代码的不同部分有不同的作用域。Python的作用域包括局部作用域、全局作用域和内置作用域。

  1. 局部作用域:函数内的变量和函数参数属于局部作用域。
  2. 全局作用域:模块内的变量和函数属于全局作用域。
  3. 内置作用域:Python的内置函数和常量属于内置作用域。

三、全局变量与局部变量的定义和使用

  1. 全局变量:在模块或函数外部定义的变量,可以在整个模块或函数内部访问。
  2. 局部变量:在函数内部定义的变量,只能在函数内部访问。
# 全局变量
my_global_variable = "This is a global variable."
def my_function():# 局部变量my_local_variable = "This is a local variable."print(my_local_variable)
# 访问全局变量
print(my_global_variable)

在上面的例子中,我们定义了一个全局变量my_global_variable和一个局部变量my_local_variable。在my_function函数内部,我们只能访问局部变量my_local_variable,而无法访问全局变量my_global_variable

四、全局变量与局部变量的生命周期

全局变量和局部变量的生命周期取决于它们的作用域。全局变量在模块或函数外部定义,它们的值在程序运行期间保持不变,直到程序结束。局部变量在函数内部定义,它们的值在函数调用时创建,函数调用结束后被销毁。

# 全局变量
my_global_variable = "This is a global variable."
def my_function():# 局部变量my_local_variable = "This is a local variable."print(my_local_variable)
# 调用函数
my_function()
# 再次调用函数
my_function()

在上面的例子中,我们定义了一个全局变量my_global_variable和一个局部变量my_local_variable。当我们调用my_function函数时,局部变量my_local_variable会被创建和销毁。

五、避免全局变量污染

在Python编程中,避免全局变量污染是一个重要的原则。全局变量应该只在模块或函数外部定义,并且只在需要全局共享的状态时使用。局部变量则用于函数内部,避免在函数内部修改全局变量。

# 全局变量
my_global_variable = "This is a global variable."
def my_function():# 局部变量my_local_variable = "This is a local variable."print(my_local_variable)# 避免修改全局变量global my_global_variablemy_global_variable = "This is a modified global variable."
# 调用函数
my_function()
# 访问全局变量
print(my_global_variable)

在上面的例子中,我们定义了一个全局变量my_global_variable和一个局部变量my_local_variable。在my_function函数内部,我们通过global关键字修改了全局变量my_global_variable。这种做法在实际编程中应该避免,因为它可能导致全局变量的不可预测行为。

六、总结

本文详细介绍了Python中的全局变量与局部变量。我们从Python的命名空间和作用域讲起,了解了全局变量和局部变量的定义、使用和生命周期。我们展示了如何在函数和模块中使用全局变量和局部变量,以及如何避免全局变量污染。全局变量和局部变量是Python编程中重要的概念,它们帮助我们在不同的作用域中管理状态和数据。

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

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

相关文章

【Vue3笔记01】如何使用Vue3和Vite搭建前端项目的基础开发环境

这篇文章,主要介绍如何使用Vue3和Vite搭建前端项目的基础开发环境【知识星球】。 目录 一、搭建项目环境 1.1、前提条件 1.2、开始搭建 1.3、下载依赖

罗德与施瓦茨联合广和通全面验证RedCap模组FG132系列先进性能

近日,罗德与施瓦茨联合广和通完成Redcap(Reduce Capability)功能和性能验证。本次测试使用R&SCMX500 OBT(One Box Tester)无线通信测试仪,主要验证广和通RedCap模组FG132系列射频性能以及IP层吞吐量,包括RedCap上下行吞吐量和射频指标如矢…

【计算机网络篇】数据链路层(2)封装成帧和透明传输

文章目录 🥚封装成帧和透明传输🎈封装成帧🎈透明传输🗒️面向字节的物理链路使用字节填充的方法实现透明传输。🗒️面向比特的物理链路使用比特填充的方法实现透明传输。 🛸练习 🥚封装成帧和透…

css的transform详解

CSS的transform属性是一个功能强大的工具,允许你对HTML元素应用2D或3D转换效果,包括旋转、缩放、倾斜和移动等。以下是对transform属性中各种函数和参数的详细介绍: 2D转换函数: translate():该函数用于移动元素。它接…

洛谷P8218 【深进1.例1】求区间和 【前缀和】【一阶差分】【二阶差分】

文章目录 前缀和前缀和例题题意 差分差分例题及code↓模版例题输入样例:输出样例: code↓ 前缀和 前缀和定义: 前缀和数组的第 i i i 位即为原数组 1 1 1 ~ i i i 位的和 原数组: 1 2 3 4 5 前缀和数组&#xff1…

BGP聚合:

BGP聚合: 1、功能: 1.1 可以指向BGP邻居发送聚合后的路由条目,从而减少路由表项(优化); 1.2 如果明细路由产生震荡,那么聚合后的路由不受影响。 1.3 简化路由表项,达到节省设备资源…

Linux systemd详解

1、概念 1.1 systemd systemd 是一个用于管理 Linux 系统启动过程和系统服务的系统和服务管理器。它被设计为取代传统的 System V init 系统,提供了更快的启动时间、并行启动服务、更好的日志记录和更强大的管理功能。 1.2 unit Unit 是 systemd 中所有配置文件…

springboot接口跨域问题解决

1、实现WebMvcConfigurer接口package com.common.config;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigur…

基于ssm校园美食交流系统论文

目 录 摘 要 1 前 言 3 第1章 概述 4 1.1 研究背景 4 1.2 研究目的 4 1.3 研究内容 4 第二章 开发技术介绍 5 2.1Java技术 6 2.2 Mysql数据库 6 2.3 B/S结构 7 2.4 SSM框架 8 第三章 系统分析 9 3.1 可行性分析 9 3.1.1 技术可行性 9 3.1.2 经济可行性 10 3.1.3 操作可行性 10…

字符函数与字符串函数

目录 一.字符分类函数 二.字符转化函数 三.strlen函数 函数的介绍 strlen函数的模拟实现 1.计算器法 2.递归 三.指针-指针的方式 四.strcpy函数 函数介绍 strcmp的模拟实现 五.strcat函数 函数介绍 strcat的模拟实现 六.strcmp函数 函数介绍 返回值 strcm…

做项目的一些感悟

一、交接: 1.不交接好千万不要松口让对方走。 2.资料、文档、注释、账号密码、项目关联信息、项目源代码、交接人联系电话、等信息必须齐全完整。 3.如果项目有问题或者交接人与公司有纠纷,这个项目尽量不要接。 4.不要随意修改交接代码,…

Java中的包装类

Java中的包装类 一、包装类是什么?二、对应关系:三、举例说明:Integer构造器:包装类特有的机制:自动装箱 自动拆箱常用方法 总结 一、包装类是什么? 以前定义变量,经常使用基本数据类型&#x…

Mysql学习--深入探究索引和事务的重点要点与考点

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

自动驾驶---Motion Planning之轨迹Path优化

1 背景 在之前的几篇文章中,不管是通过构建SL图《自动驾驶---Motion Planning之Path Boundary》,ST图《自动驾驶---Motion Planning之Speed Boundary》,又或者是构建SLT图《自动驾驶---Motion Planning之构建SLT Driving Corridor》,最终我们都是为了得到boundary的信息。 …

OpenCV实战:智能人脸识别打卡系统

1、介绍 目前,很多公司对员工的考勤同时通过打卡机或者钉钉之类的打卡软件,传统的员工打卡方式有很多,例如点名、签字、刷卡、指纹等等 然而随机机器视觉、计算机视觉的不断发展,算力的不断提升,人工智能对人脸检测的…

如何用联合(共用体)union验证系统大小端

一:思路 由联合体的特点,可知上图,char c 和 int i 共用四个字节,假设是小端,则由左到右是低地址到高地址,四个字节的内容如图所示01 00 00 00 代码展示: 如果第一个字节是1,则证明…

python练习01

1.单击 import win32com.client import time import pyautogui import random#随机数 sj random.randint(1, 3)time.sleep(sj) dmwin32com.client.Dispatch(dm.dmsoft)#调用大漠插件,获取大漠对象 print(dm.ver()) #显示版本3.1233表示调用成功# 设置大漠插件的路径 dm.SetP…

洛谷入门——P2669 [NOIP2015 普及组] 金币

[NOIP2015 普及组] 金币 题目背景 NOIP2015 普及组 T1 题目描述 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天&…

<Linux> 线程池

目录 前言: 一、线程池概念 (一)池化技术 (二)优点 (三)应用场景 二、线程池的实现 (一)线程池_V1(朴素版) (二)线…

Nginx发布之后可以使用IP访问,不能使用localhost访问, Nginx发布之后可以使用localhost访问,不能使用IP访问,

如标题所说 Nginx发布之后可以使用IP访问,不能使用localhost访问, Nginx发布之后可以使用localhost访问,不能使用IP访问, 修改配置文件也没有用 清除浏览器缓存数据