首页/新闻资讯/正文详情

Python中的全局变量和局部变量详解

发布时间:2026/11/3 2:38:26 来源:云帆数科 栏目:资讯中心
Python中的全局变量和局部变量详解
咱们来聊聊那个问题, 就是中, 全局变量还有局部变量在作用域和访问权限这块, 是有着明显的区别。你听好了, 这个全局变量, 它是在整个程序当中都能被访问到的那个类型的东西而另一方面, 这个局部变量则仅仅只能够在它自己定义的那个函数里面才行。1. 全局变量# 定义全局变量global_var 10# 全局变量在函数内部也是可访问的def func_using_global():print(f访问全局变量 global_var 的值{global_var})# 调用函数func_using_global()如上面那个示例里显示的, 那个东西是被定义成了全局变量, 所以说呢, 它完全可以在函数括号里面被访问到并且能被使用。2. 局部变量# 定义函数内部有一个局部变量def func_creating_local():local_var 20print(f局部变量 local_var 的值{local_var})# 调用函数func_creating_local()# 尝试在函数外部访问局部变量会导致 NameError# print(f尝试在函数外部访问局部变量 local_var{local_var})在这个例子当中, 那个东西是在函数这个括号里面的局部变量。如果你想去尝试在函数外面去访问这个局部变量的话, 那么就会发生错误。这是因为局部变量它的作用范围是被限制在它被定义的那个函数的内部的, 除了这个函数之外它就没办法被访问到了。3. 在全局的作用域里, 存在着变量, 然后呢在函数的内里头, 对这些个变量进行了修改。global_var 10def modify_global():global global_varglobal_var 30print(f在函数内部修改全局变量 global_var 的值为{global_var})modify_global()print(f全局变量 global_var 修改后的值为{global_var})在这个示例里面, 大家看到在函数的内部使用那个关键词, 然后我们就成功的把全局变量的值给改成了30, 另外这个修改还是能够一直保持下去的, 它会对整个程序都造成影响。4. 当局部变量的名字碰巧和全局变量的名字一样, 这就构成了命名上的冲突。在编程这个场景下, 要是全局变量和局部变量用了同一个名字, 那可能会让大家搞不清楚状况, 还可能会导致出现一些让人意想不到的结果。下面是给大家准备的一个示例。var 10 # 全局变量def func():var 20 # 局部变量print(f在函数内部的局部变量 var 值为{var})func()print(f在函数外部的全局变量 var 值为{var})在这个情况下面, 是存在有一个全局变量 var , 同时也存在有函数内部的一个同名的局部变量 var 。当我们在函数内部的时侯, 那一个局部变量 var 的值它是等于 20 的, 可是在函数外部的那个时侯, 全局变量 var 的值它依然是保持着 10 不变。因为这个命名冲突的事情, 它是有可能会给人带来一些混淆感的, 所以我们是在编写代码的时候需要特别地去注意一下才行。5. 使用 关键字修改嵌套函数中的变量其中, 还存在一个嵌套函数的现象。具体来说, 就是在一个函数里面再去定义另一个函数。在这个时候。就可以利用某关键字去改变那个外层函数中的局部变量内容。def outer_func():outer_var 30 # 外层函数的局部变量def inner_func():nonlocal outer_varouter_var 40 # 修改外层函数的局部变量print(f嵌套函数内部修改外部函数变量 outer_var 值为{outer_var})inner_func()print(f外部函数变量 outer_var 修改后的值为{outer_var})outer_func()在这个例子里面, 我们看到了在嵌套函数中进行操作的情况, 并且使用了相关的关键字来修改外层函数的局部变量的值, 结果使得这个变量的值从30变成为了40。总结总结全局变量和局部变量在中的区别是至关重要的。全局变量可以在整个程序中被访问到, 而局部变量只有在其所定义的函数内部才具有可见性。这种差异具体牵涉到作用域以及访问权限的问题, 并且会直接影响程序整体结构上的合理性以及运行时的灵活性情况。与此同时, 这一知识点对于有效避免命名冲突的发生以及保障程序逻辑表达得足够清晰明了, 也都是极其重要的环节。把全局变量和局部变量用得合理一点, 可以让代码变得更清晰, 也更容易去维护它。与此同时, 在嵌套函数里面处理局部变量的变动时的那个关键字, 在对外层函数的变量数值进行修改的时候, 显得特别有用处。只要弄懂这些概念就能够更好地使用这个语言的强大功能和灵活特点, 从而写出看上去更加优雅并且非常稳固的代码内容。对于构建一个优秀的程序来说, 全局变量与局部变量的正确使用方法这件事是非常非常重要的。

相关推荐

Z-Image-Turbo-GGUF 量化版本怎么选:Q2_K 到 Q8_0 共 14 档显存需求与画质差异全解析
Z-Image-Turbo-GGUF 量化版本怎么选:Q2_K 到 Q8_0 共 14 档显存需求与画质差异全解析

Z-Image-Turbo-GGUF 量化版本怎么选:Q2_K 到 Q8_0 共 14 档显存需求与画质差异全解析 Z-Image-Turbo-GGUF 是 6B 参数 Z-Image-Turbo 文生图模型的 GGUF 量化版本,由 unsloth 团队采用 Unsloth Dynamic 2.0 动态量化方法制作,关键层自动回退… · 2026/11/3 2:38:26

目的地爆火出圈,谁来把热度留下?
目的地爆火出圈,谁来把热度留下?

作者 | 郭鸿云编辑 | Sette最近,开封清明上河园又因为审美被夸了。曾在夏天撑起“接天莲叶无穷碧”的荷叶天幕,入秋后悄悄换成一片金黄色的银杏叶。游客抬头是“一叶知秋”,低头便举起手机。看似只是换了一套布景,游园体验却又一次… · 2026/11/3 2:38:26

不做通用型智能体,这家全球前十的AI公司为何“反向操作“?
不做通用型智能体,这家全球前十的AI公司为何“反向操作“?

不做通用型智能体,这家全球前十的AI公司为何"反向操作"? 2026年的AI圈,最不缺的就是"全知全能"的故事:今天这家发布能订机票的超级助手,明天那家宣布要接管你的电脑,人人都想造一个&qu… · 2026/11/3 2:37:25

MTBF计算书深度解析:从失效率模型到整机可靠性预计
MTBF计算书深度解析:从失效率模型到整机可靠性预计

简介:这份MTBF计算书面向可靠性工程师、硬件设计人员及电子产品质量评估学习者,以金属膜电阻器为切入点,完整演示平均故障间隔时间的计算流程。内容围绕失效率公式λpλbπEπCVπQ展开,逐项列出各型号电阻的基本失效率、环境系数… · 2026/11/3 4:34:49

pytest与Allure自动化测试实战指南
pytest与Allure自动化测试实战指南

1. 为什么选择pytestAllure组合 在自动化测试领域,pytest和Allure的组合已经成为事实上的行业标准配置。pytest作为Python生态中最主流的测试框架,其简洁的语法和丰富的插件体系让测试代码的编写变得异常高效。而Allure作为测试报告生成工具&#xff0c… · 2026/11/3 4:34:49

MySQL $用法全解析:从shell变量到索引优化与备份排查
MySQL $用法全解析:从shell变量到索引优化与备份排查

“$ 在 MySQL 里到底算个什么东西?”这个问题我在不同场合被问过至少七八次,问的人里有刚学 MySQL 基础用法两周的在校生,也有写了三四年业务代码、突然被派去写部署脚本的开发者。有意思的是,大家卡住的地方几乎一样:… · 2026/11/3 4:34:49

MySQL $用法详解:shell变量展开与命令行排错
MySQL $用法详解:shell变量展开与命令行排错

“mysql $的用法”这个搜索词,我第一次看到的时候也愣了一下——MySQL 的命令行提示符确实是mysql>,但要说到$,其实大多数时候它压根不属于 MySQL,而是属于你面前那个 shell。“Mysql一些基础用法”和$撞在一起,说明… · 2026/11/3 4:34:49

Agent技能跨工具管理:Skills Manager桌面中枢设计与适配实践
Agent技能跨工具管理:Skills Manager桌面中枢设计与适配实践

1. 为什么我们需要一个Agent技能中枢过去一年我陆续在五六个AI编程工具之间来回切换,从终端里的命令行助手,到编辑器插件,再到独立运行的桌面Agent,每个工具都有自己的技能目录、配置格式和加载逻辑。最头疼的不是学新工具&#x… · 2026/11/3 4:34:49

NineData实现MySQL到openGauss PostgreSQL数据复制
NineData实现MySQL到openGauss PostgreSQL数据复制

1. 项目概述:NineData新增MySQL到openGauss PostgreSQL兼容版数据复制链路最近NineData平台上线了一个让数据库管理员们眼前一亮的新功能——支持MySQL到openGauss PostgreSQL兼容版的数据复制链路。这个功能解决了不少企业级用户在实际业务中遇到的数据库迁移难题。… · 2026/11/3 4:33:49

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码