如何在Python中创建和使用全局变量和局部变量?

news/2024/12/2 17:56:37/

如何在Python中创建和使用全局变量和局部变量?

在Python中,变量根据它们被定义和使用的位置可以分为全局变量和局部变量。全局变量定义在函数或类的外部,而局部变量定义在函数或方法的内部。全局变量在整个程序运行期间都是可见的,而局部变量只在定义它们的函数或方法执行期间可见。下面我们将详细讨论如何在Python中创建和使用这两种变量。

一、全局变量的创建和使用

全局变量定义在函数或类的外部,即程序的顶层。它们在整个程序运行期间都是可见的,并且可以在程序的任何位置被访问和修改。

以下是一个创建和使用全局变量的例子:

 

python复制代码

# 创建一个全局变量
global_var = 10
def print_global_var():
# 在函数内部访问全局变量
print("全局变量的值为:", global_var)
# 调用函数
print_global_var() # 输出:全局变量的值为: 10
# 修改全局变量的值
global_var = 20
# 再次调用函数
print_global_var() # 输出:全局变量的值为: 20

在这个例子中,我们首先创建了一个名为global_var的全局变量,并将其初始化为10。然后,我们定义了一个名为print_global_var的函数,该函数内部直接访问了全局变量global_var并打印了它的值。接着,我们修改了全局变量的值为20,并再次调用了函数,可以看到函数内部访问到的全局变量值已经更新为20。

二、局部变量的创建和使用

局部变量定义在函数或方法的内部,它们的作用域仅限于定义它们的函数或方法。一旦函数或方法执行完毕,局部变量就会被销毁。

以下是一个创建和使用局部变量的例子:

 

python复制代码

def create_local_var():
# 创建一个局部变量
local_var = 5
print("局部变量的值为:", local_var)
# 调用函数
create_local_var() # 输出:局部变量的值为: 5
# 尝试在函数外部访问局部变量(会引发错误)
# print(local_var) # NameError: name 'local_var' is not defined

在这个例子中,我们定义了一个名为create_local_var的函数,并在函数内部创建了一个名为local_var的局部变量。当函数被调用时,局部变量local_var被创建并初始化为5,然后函数打印出它的值。然而,如果我们尝试在函数外部访问这个局部变量(取消注释最后一行代码),Python会抛出一个NameError,因为局部变量在函数外部是不可见的。

三、在函数内部修改全局变量

在函数内部,你可以访问全局变量,但如果你尝试修改它,Python会默认认为你正在创建一个新的局部变量。为了避免这种混淆,你需要在函数内部使用global关键字来显式地声明你要修改的是全局变量。

以下是一个在函数内部修改全局变量的例子:

 

python复制代码

# 创建一个全局变量
global_var = 10
def modify_global_var():
# 使用global关键字声明我们要修改的是全局变量
global global_var
global_var = 20
print("修改后的全局变量的值为:", global_var)
# 调用函数
modify_global_var() # 输出:修改后的全局变量的值为: 20
# 在函数外部访问修改后的全局变量
print("函数外部的全局变量的值为:", global_var) # 输出:函数外部的全局变量的值为: 20

在这个例子中,我们在modify_global_var函数内部使用global关键字声明了我们要修改的是全局变量global_var,然后将其值修改为20。函数外部的打印语句证明了全局变量的值确实被修改了。

四、总结

全局变量和局部变量在Python中扮演着重要的角色,它们各自有其特定的使用场景。全局变量用于在整个程序中共享数据,而局部变量则用于在函数或方法内部存储临时数据。在使用这两种变量时,需要注意它们的作用域和生命周期,以避免出现意外的错误。同时,也要尽量避免在函数内部修改全局变量,因为这可能会导致程序的可读性和可维护性降低。如果需要在函数之间共享数据,可以考虑使用参数传递、返回值或者将数据封装在对象或数据结构中。


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

相关文章

(二)小案例银行家应用程序-创建DOM元素

● 上图的数据很明显是从我们账户数组中拿到了,我们刚刚学习了forEach,所以我们使用forEach来创建我们的DOM元素; const displayMovements function (movements) {movements.forEach((mov, i) > {const type mov > 0 ? deposit : w…

福州装修答疑 | 飘窗能不能砸掉?福州中宅装饰,福州装修

装修中的飘窗是一种常见的装饰元素,它不仅可以增加室内的采光和通风效果,还能为居室增添一份雅致和温馨。然而,很多业主在装修中都会遇到一个共同的问题:装修中的飘窗到底能不能砸?什么情况下可以砸?什么情…

【PostgreSQL】技术传承:使用Docker快速部署PostgreSQL数据库

前言 PostgreSQL的重要贡献者Simon Riggs因一起坠机事故不幸离世。Simon Riggs是英国著名的软件与服务领导者,也是PostgreSQL的主要开发者和贡献者。事故发生在英国当地时间3月26日13:41分,当时他驾驶的私人通用航空Cirrus SR22飞机在英国达克斯福德机场…

DOTS:Burst

目录 一:简介 1.1 Getting started 1.2 C# language support 1.2.1 HPC# overview 1.2.1.1 Exception expressions 1.2.1.2 Foreach and While 1.2.1.3 Unsupported C# features in HPC# 1.2.2 Static read-only fields and static constructor support 1.…

【QT+QGIS跨平台编译】056:【pdal_json_schema+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、pdal_json_schema介绍二、pdal下载三、文件分析四、pro文件五、编译实践一、pdal_json_schema介绍 pdal_json_schema 是与 PDAL(Point Data Abstraction Library)相关的 JSON 模式文件。PDAL 是一个用于处理和分析点云数据的开源库。JSON 模式…

【攻防世界】FlatScience

dirsearch 扫描发现四个文件 在login.php 中发现 输入 http://61.147.171.105:61912/login.php/?debug 发现源码 <?php if(isset($_POST[usr]) && isset($_POST[pw])){$user $_POST[usr];$pass $_POST[pw];$db new SQLite3(../fancy.db);$res $db->query(…

Elementplus 2.6.1表单校验模块开发体验改进

需求 之前的表单代码看了下&#xff0c;写的比较冗长&#xff0c;于是去万能的Github找点轮子&#xff0c;发现了这个&#xff1a; GitHub - aweiu/element-ui-verify: 如果你受够了饿了么ElementUI原生的校验方式&#xff0c;那就来试试它吧&#xff01;一款更懂你的校验插件…

2024年最新版FL Studio21.2.3 Build 4004 for Mac 版激活下载和图文激活教程

FL studio21中文别名水果编曲软件&#xff0c;是一款全能的音乐制作软件&#xff0c;包括编曲、录音、剪辑和混音等诸多功能&#xff0c;让你的电脑编程一个全能的录音室&#xff0c;它为您提供了一个集成的开发环境&#xff0c;使用起来非常简单有效&#xff0c;您的工作会变得…