【Python】函数 ⑥ ( 变量作用域 | 局部变量 | 全局变量 | global 关键字 | 代码示例 )

news2024/11/18 6:01:05

文章目录

  • 一、变量作用域
    • 1、局部变量
    • 2、全局变量
    • 3、代码示例 - 函数体内修改全局变量失败
    • 4、代码示例 - 函数体内修改全局变量





一、变量作用域



Python 变量 作用域变量的 使用范围 , 变量 在哪些 代码区域中可以被访问 , 在哪些代码块中不能被访问 ;


变量主要分为两类 :

  • 局部变量
  • 全局变量

1、局部变量


局部变量 指的是 定义在 函数中的变量 , 只在 函数 内部可访问 , 函数 外部无法访问 函数中的局部变量 ;

局部变量的作用是 在 函数运行时 , 临时保存 临时变量 数据 , 函数运行结束 , 局部变量会被销毁 ;


错误代码示例 : 在该代码中的 add 函数中定义了局部变量 sum_num , 该 局部变量 只能在函数内部访问 , 如果在函数外部访问时 , 编译时会报错 Unresolved reference 'sum_num' , 运行时会报错 NameError: name 'sum_num' is not defined ;

"""
局部变量 代码示例
"""

# 定义函数 以及 局部变量
def add(a, b):
    # sum_num 是局部变量, 只能在函数内部访问
    sum_num = a + b
    print(sum_num)

# 调用函数
add(1, 2) # 输出: 3

# 尝试调用 函数内部的 局部变量
print(sum_num) # 报错: NameError: name 'sum_num' is not defined

执行结果 :

Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
3
Traceback (most recent call last):
  File "Y:\002_WorkSpace\PycharmProjects\HelloPython\hello.py", line 12, in <module>
    print(sum_num)
NameError: name 'sum_num' is not defined

Process finished with exit code 1

报错 :

NameError: name 'sum_num' is not defined

在这里插入图片描述


2、全局变量


全局变量 是 在 函数体 外部 定义的变量 , 该变量 可以在 函数体 内部 和 外部 同时生效 ;

在 函数体 外部 使用全局变量 , 直接使用即可 ;

全局变量 可以在 函数体内部访问 , 只能读取 , 不能修改 ;

如果 要在 函数体 内部使用全局变量 , 如果要修改 全局变量的值 , 需要使用 global 关键字提前声明 , 否则就会将变量当做新定义的内部变量 ;


3、代码示例 - 函数体内修改全局变量失败


在下面的代码中 , 定义了全局变量 sum_num ,

如果要在 add 函数中 , 读取该全局变量 , 可以直接读取 ;

但是如果要修改改全局变量 , 直接使用 sum_num = a + b 代码 重新为 全局变量赋值 , 该操作相当于在 函数中 重新定义了一个新的局部变量 , 在函数执行完毕后 就会销毁 , 该 局部变量 sum_num 与 全局变量 sum_num 没有任何关系 ;

因此 , 最后打印出来的 全局变量 sum_num 值仍为 0 ;

代码示例 :

"""
全局变量 代码示例
"""

# 定义全局变量
sum_num = 0

# 定义函数 以及 尝试使用全局变量
def add(a, b):
    # 此处的 sum_num 是局部变量
    sum_num = a + b
    # 输出局部变量
    print(sum_num)

# 调用函数
add(1, 2) # 输出: 3

# 尝试调用 函数内部的 局部变量
print(sum_num) # 输出: 0

执行结果 :

3
0

在这里插入图片描述


4、代码示例 - 函数体内修改全局变量


在下面的代码中 , 如果要修改改全局变量 , 不能直接使用 sum_num = a + b 代码 , 需要先使用 global sum_num 代码 , 声明一下下面将要使用全局变量 sum_num , 此时编译器就会将该变量当做全局变量进行处理 ;

最后打印出来的 全局变量 sum_num 值 为 3 ;


代码示例 :

"""
全局变量 代码示例
"""

# 定义全局变量
sum_num = 0

# 定义函数 以及 尝试使用全局变量
def add(a, b):
    # 此处的 sum_num 是全局变量
    global sum_num
    sum_num = a + b
    # 输出全局遍变量
    print(sum_num)

# 调用函数
add(1, 2) # 输出: 3

# 输出全局变量
print(sum_num) # 输出: 3

执行结果 :

3
3

在这里插入图片描述

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

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

相关文章

国产化麒麟系统在window系统上用hyper-v搭建虚拟机环境QT安装文件传输步骤

1 麒麟系统国产化hyper-v虚拟机环境经验 1.1 简介 随着国际环境的变化&#xff0c;软硬件国产化是现在迫切的需求&#xff0c;只有实现了自主研发&#xff0c;才能自立自强&#xff0c;才能实现民族伟大复兴&#xff0c;才能实现祖国的繁荣昌盛。为了实现这一目标&am…

AI可能造成人类灭绝,真的还是炒作?

5月30日&#xff0c;一封由非营利组织人工智能安全中心&#xff08;Center for AI Safety&#xff09;发布的简短声明轰动了AI界&#xff0c;导致人工智能的地位可能会被动摇。 我们在该组织的官网上找到了这份声明。声明中仅有22个单词&#xff0c;却饱含了专家对AI的“控诉”…

JavaEE-JVM的学习

目录 JVM执行流程JVM内存区域划分程序计时器栈堆方法区 JVM类加载机制1)Loading环节2)Linking环节2.1) Verification2.2)Preparation2.3)Resolution 3)Initializing JVM典型面试题JVM的垃圾回收机制(GC)分代回收 JVM执行流程 程序在执行之前先要把java代码转换成字节码&#xf…

盘点一个Python自动化办公需求,实现数据自动填充(下篇)

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 七月七日长生殿&#xff0c;夜半无人私语时。 大家好&#xff0c;我是皮皮。 一、前言 前几天遇到了一个小需求&#xff0c;粉丝自己在实际工作中的需求…

回顾 | Semantic Kernel:面向 AI 编程(二) - Prompt Skill

点击蓝字 关注我们 编辑&#xff1a;Alan Wang 排版&#xff1a;Rani Sun 微软 Reactor 为帮助广开发者&#xff0c;技术爱好者&#xff0c;更好的学习 .NET Core, C#, Python&#xff0c;数据科学&#xff0c;机器学习&#xff0c;AI&#xff0c;区块链, IoT 等技术&#xff0…

子集II--(回溯+去重)

1题目 给你一个整数数组 nums &#xff0c;其中可能包含重复元素&#xff0c;请你返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。返回的解集中&#xff0c;子集可以按 任意顺序 排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,2…

基于最大似然反射率的异构激光雷达强度标定方案(开源)

文章&#xff1a;Maximum Likelihood Remission Calibration for Groups of Heterogeneous Laser Scanners 作者&#xff1a;Bastian Steder Michael Ruhnke Rainer Kummerle Wolfram Burgard 编辑&#xff1a;点云PCL 代码&#xff1a;https://github.com/soytony/IntensityCa…

vue 更新数组的方法

在 vue中&#xff0c;我们可以通过给数组添加索引来更新数组的值&#xff0c;比如我们需要在一个新的页面中添加一个新的元素&#xff0c;那么我们就可以通过给这个数组添加索引来实现。那么有朋友就会问了&#xff0c;为什么不直接在 vue中直接添加一个新的元素呢&#xff1f;…

chatgpt赋能python:Python列表排列顺序详解

Python列表排列顺序详解 作为一门功能丰富的高级编程语言&#xff0c;Python在不同类型的开发任务中广泛应用。其中&#xff0c;列表是一种常见的数据类型&#xff0c;用于存储多个元素。Python列表可以包含任何类型的数据&#xff0c;包括数字、字符串和其他列表等&#xff0…

干洗店软件,洗衣洗鞋线上下单小程序开发

干洗店软件洗衣洗鞋线上下单小程序&#xff1b; 可以实现客户自助办理&#xff0c;也可以和公众号、小程序等结合起来。干洗店软件可以实现客户管理&#xff0c;如积分管理&#xff0c;产品设置等功能。 线上下单&#xff0c;上门取货&#xff0c;订单拍照&#xff0c;订阅提示…

开发者实战 | 分割一切?Segment Anything 量化加速实战

点击蓝字 关注我们,让开发变得更有趣 作者 | 杨亦诚 排版 | 李擎 分割一切&#xff1f; Segment Anything 量化加速实战 前言 “分割一切,大家一起失业&#xff01;”——近期&#xff0c;这样一句话在社交媒体上大火&#xff01;这讲的就是 Segment Anything Model&#xff08…

chatgpt赋能python:Python创建一个Person类

Python 创建一个 Person 类 Python 是一种高级编程语言&#xff0c;因为它易于学习和使用&#xff0c;并且可以用于多种用途。使用 Python&#xff0c;您可以轻松创建各种程序&#xff0c;从简单的脚本到完整的应用程序。Python 的一个重要特点是它的面向对象编程能力&#xf…

「VS」Visual Studio 字符集

✨博客主页&#xff1a;何曾参静谧的博客 &#x1f4cc;文章专栏&#xff1a;「VS」Visual Studio 当我们在使用 Visual Studio 编写程序时&#xff0c;经常会遇到字符集的问题。在 Visual Studio 中&#xff0c;字符集选项有两个选项&#xff1a;Unicode 字符集和多字节字符集…

期刊和会议如何查询、期刊级别分类和顶会概念一文精析

期刊和会议查询、期刊级别分类和顶会概念分析 一、如何查询期刊和会议1.中文期刊-用知网出版物检索2.外文期刊-一般用letpub3.会议查询 二、国内期刊的正刊三、国内核心期刊四、国际核心期刊五、ESCI、SCI和SCIE的区别六、国际会议核心七、普刊八、顶刊九、水刊十、预警期刊 了…

一起看 I/O | Android 性能相关最新动态

作者 / Ben Weiss 过去几年来&#xff0c;我们一直致力于让性能提升工作变得更易上手、回报更高。我们将在本文中分享这一领域的最新发展动态。为您介绍基准配置文件、Android Studio 中的工具改进、库&#xff0c;以及我们如何让这项技术更好地在后台为您服务。此外&#xff0…

IPA50R190CE-ASEMI代理英飞凌MOS管IPA50R190CE

编辑&#xff1a;ll IPA50R190CE-ASEMI代理英飞凌MOS管IPA50R190CE 型号&#xff1a;IPA50R190CE 品牌&#xff1a;Infineon(英飞凌) 封装&#xff1a;TO-220F 最大漏源电流&#xff1a;24.8A 漏源击穿电压&#xff1a;500V RDS&#xff08;ON&#xff09;Max&#xff1…

某oa 11.10 未授权任意文件上传

漏洞简介 之前也对通达 oa 做过比较具体的分析和漏洞挖掘&#xff0c;前几天看到通达 oa 11.10 存在未授权任意文件上传漏洞&#xff0c;于是也打算对此进行复现和分析。 环境搭建 https://www.tongda2000.com/download/p2019.php 下载地址 &#xff1a;https://cdndown.tongda…

java-Lambde和方法引用

java-Lambde和方法引用 一、Lambda表达式 1.1 Lambda标准格式 格式&#xff1a; ​ (形参) -> {代码块} 形参&#xff1a;如果有多个参数&#xff0c;参数之间用逗号隔开&#xff1b;如果没有参数&#xff0c;留空即可 ->&#xff1a;由英文中画线和大于符号组成&#…

企业虚拟机服务器中了lockbit3.0勒索病毒怎么办,lockbit勒索病毒解密

虚拟机服务器在现代企业中扮演着至关重要的角色&#xff0c;它是一个重要的基础设施&#xff0c;用于支持大量的业务应用和数据存储。然而&#xff0c;随着网络攻击技术的不断发展&#xff0c;企业虚拟机服务器也面临着来自黑客的威胁。其中一种最具破坏性的攻击是勒索病毒&…

单例模式8种写法

0. 为什么需要单例模式&#xff1f; 节省内存和计算保证结果正确方便管理 使用场景&#xff1a; 1. 饿汉式&#xff08;静态常量&#xff09;—推荐指数&#xff1a;★★☆☆☆ 优点&#xff1a;不会有线程安全问题。 缺点&#xff1a;在类加载的时候就创建对象&#xff0c;…