63 变量的作用域

news2024/11/26 2:28:56

变量起作用的代码范围称为变量的作用域,不同作用域内同名变量之间互不影响。在函数外部和函数内部定义的变量,其作用域是不同的,函数内部定义的变量一般为局部变量,在函数外部定义的变量为全局变量。不管是局部变量还是全局变量,其作用域都是从定义的位置开始的,在此之前无法访问。

在函数内定义的局部变量只在该函数内可见,当函数运行结束以后,在其内部定义的所有局部变量将被自动删除而不可访问。在函数内部使用 global 定义的局部变量当函数结束后仍然存在并且可以访问。

如果在函数内部修改一个定义在函数外的变量值,必须使用 global 明确声明,否则会自动创建新的局部变量。在函数内部通过 global 关键字来声明或定义全局变量,这分两种情况。
(1) 一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将修改的结果反映到函数之外,可以在函数内用关键字 global 明确声明要使用已定义的同名全局变量。
(2)在函数内部直接使用 global 关键字将一个变量声明为全局变量,如果在函数外没有定义该全局变量,在调用这个函数后,会创建新的全局变量。

① 在函数内如果只引用某个变量的值而没有为其赋新值,该变量为(隐式的)全局变量。
② 如果在函数内某条代码有为变量赋值的操作,该变量就被认为是(隐式的)局部变量,除非在函数内赋值操作之前显示地用关键字 global 进行了声明。

def func():
    global x  # 声明或创建全局变量,必须在使用 x 之前执行
    x = 3  # 修改全局变量的值
    y = 4  # 局部变量
    print(x, y)


x = 5  # 在函数外部定义了全局变量x
func()

print(x)
# print(y)  # 局部变量在函数运行结束之后自动删除,不再存在

del x  # 删除了全局变量x
# print(x)  # NameError: name 'x' is not defined

func()  # 本次调用创建了全局变量
print(x)

在这里插入图片描述

如果在某个作用域内有为变量赋值的操作,那么该变量将被认为是该作用域内的局部变量。

def func():
    print(x)  # 这条语句会引发异常,因为变量 x 现在还不存在
    x = x + 1  # 赋值语句,x 将被认为是该作用域内的局部变量
    # print(x)


# UnboundLocalError: local variable 'x' referenced before assignment
# func()



y = 10


def demo():
    print(y)


demo()

在这里插入图片描述

如果局部变量与全局变量具有相同的名字,那么该局部变量会在自己的作用域内暂时隐藏同名的全局变量。

def func():
    x = 3  # 创建了局部变量,并自动隐藏了同名的全局变量
    print(x)


x = 5  # 创建了全局变量
print(x)
func()
print(x)  # 函数调用结束后,不影响全局变量 x 的值

在这里插入图片描述

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

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

相关文章

【网络安全】探索AI 聊天机器人工作流程实现RCE

未经许可,不得转载。 文章目录 前言正文前言 我发现了一个广泛使用的AI聊天机器人平台中的远程代码执行漏洞。该漏洞存在于聊天机器人的自定义工作流响应代码中,这些工作流允许开发人员通过创建定制的流程来扩展机器人的功能。 正文 在浏览自动化聊天机器人的多个特定功能…

爱国者vs格行vs吉客猫随身wifi综合测评!哪款随身WiFi最好用?随身wifi哪个品牌性价比最高?随身WiFi哪个网速最快?

近两年,随身WiFi作为便携上网的解决方案,备受欢迎。不过市场上品牌众多,各有千秋。今天,我们将聚焦于爱国者、格行以及吉客猫这三个热门品牌,通过详细对比,为您揭示每款随身WiFi的特点和区别,方…

VMware14安装图文

1.下载 通过百度网盘分享的文件:VMware14安装图文 链接:https://pan.baidu.com/s/1t2kHDphI_z1guqp0P-NO_A 提取码:q3j0 --来自百度网盘超级会员V3的分享 2.安装

Python程序组成部分

此文为《Python入门经典以解决计算问题为导向的Python编程实践》27-31页的笔记。 程序组成部分 一、模块二、表达式和语句三、空白缩进续行 四、注释五、特殊元素1、关键字2、运算符3、标点符号(又名分隔符)4、字面量 六、对象命名(很重要&a…

十七.核心动画 - 使用重复图层(CAReplicatorLayer)构建自定义loading视图.

引言 本篇博客我们来详细的讨论一下CAReplicatorLayer图层,它是一个功能非常强大的工具,允许我们通过重复图层来创建复杂且高效的动画效果,无论是加载动画,粒子效果,还是其它重复性的图形动画,CAReplicato…

init.rc及其一些语法

1,rc文件 on property:同时判断两个条件 拷打gbt on property:sys.usb.configncm,adb 这是什么意思 config是ncm或adb 这是一个Android系统的属性,它表示USB接口的配置。"ncm"代表使用NCM(Network Control Model)协议…

11、Fawkes

难度 高 目标 2个root 3个flag 当我看到这种类型我就知道肯定是docker系列的连锁环境了 netdiscover -i eth0 -r 192.168.189.0/24 kali 192.168.189.58 靶机 192.168.189.69 扫描一下开放的端口和服务识别 应该是存在ftp 的匿名访问,然后还有一个monkeycom&…

【Material-UI】Autocomplete 组件中的自定义过滤功能(Custom filter)详解

文章目录 一、简介二、createFilterOptions 工厂函数配置选项返回值示例代码代码解释 三、高级自定义:模糊匹配四、实际应用场景1. 数据清理和标准化2. 特定业务逻辑 五、总结 Material-UI 的 Autocomplete 组件不仅提供了强大的自动完成功能,还允许开发…

Prometheus监控组件在SpringBoot项目中使用实践

Prometheus监控组件在SpringBoot项目中使用实践 时间:2024/7/29 背景:本人最近参与的一个项目,要监控远程软硬件以及本地软硬件,实现远程监控以及告警功能。 开发环境: JDK1.8,Maven,PostgreS…

automa自动化工作流教程(三)循环元素进行操作

循环元素 选择器选中的必须是多个元素,如果是css选择器,举例:class属性有多个 .postTitle 并且要生成或填上循环id 有开发需求 call me

【轨物推荐】谈谈科学、工程与技术的关系

原创 宋华振 说东道西 2022年07月05日 23:34 上海 为什么要谈这个话题? 前几天,戴老师转发了一篇《中国科学创新四十年-可能还没搞明白科学和技术的基本概念》,这篇文章谈及了科学与技术的差异,其中谈到了几个误区,误…

HCIP实验-MGRE+OSPF

实验拓扑图: 实验要求: 1.R6为ISP,只能配置IP地址,R1-R5的环回为私有网段 2.R1/4/5为全连的MGRE结构, R1/2/3为星型的拓扑结构,R1为中心站点 3.所有私有网段可以互相通讯,私有网段使用ospf协…

【C++】————哈希表

作者主页: 作者主页 本篇博客专栏:C 创作时间 :2024年8月6日 前言: 在计算机科学的广袤世界中,数据结构犹如基石,支撑着各种高效算法的构建与运行。而哈希表(Hash Table)&#…

【Python系列】使用 `isinstance()` 替代 `type()` 函数

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

24. 两两交换链表中的节点(Java)

目录 题目描述:示例 :代码实现: 题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换&am…

基于飞腾E2000的科东软件Intewell工业实时操作系统方案

科东软件Intewell工业实时操作系统是完全自主开发的产品,具有20年以上行业应用经验。Intewell基于微内核架构设计,具备高实时、高可靠等特点,同时虚拟化技术支持GPOSRTOS等多种操作系统架构,可实现实时和非实时业务融合应用&#…

揭秘LoRA:利用深度学习原理在Stable Diffusion中打造完美图像生成的秘密武器

文章目录 引言LoRA的原理LoRA在角色生成中的应用LoRA在风格生成中的应用LoRA在概念生成中的应用LoRA在服装生成中的应用LoRA在物体生成中的应用结论 引言 在生成式人工智能领域,图像生成模型如Stable Diffusion凭借其出色的生成效果和广泛的应用场景,逐…

渲染技术如何应对数据增长与计算挑战

随着科技的飞速发展,数字内容的制作与呈现变得日益复杂和精细,这对渲染技术提出了前所未有的挑战。特别是在数据爆炸式增长和计算需求急剧提升的背景下,如何优化渲染技术,以应对这些挑战,成为了一个亟待解决的问题。 …

牛客JS题(二十三)判断质数

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 原型链如何优雅的判断质数 题干&#xff1a; 我的答案 <!DOCTYPE html> <html><head><meta charsetutf-8></head><body><script type"text/javascript">/*** 素…

试用期没烦恼 神器!!!使用doxygen+Graphviz自动生成函数调用关系图

大家好&#xff0c;我是 小杰学长 使用doxygenGraphviz自动生成函数调用关系图 gitee源码仓库链接跳转 前言 1.下载 首先&#xff0c;下载2个软件&#xff0c; 最新版即可&#xff0c; Doxygen 下载地址&#xff1a; https://sourceforge.net/projects/doxygen/ 下载步骤…