python变量的作用域

article/2025/11/6 21:04:51

作用域又可以被称为命名空间,指变量起作用的范围。Python变量作用域可以分为四种,分别为局部作用域、嵌套作用域、全局作用域、内置作用域。

作用域英文简写
局部作用域LocalL
嵌套作用域EnclosedE
全局作用域GlobalG
内置作用域Built-inB

四种作用域中变量的调用顺序采取“就近原则”,即为 LEGB

局部作用域

指某个函数内部的范围。每次执行函数时都会创建的新命名空间,同一函数不同时间运行其作用域相互独立,不同函数内部可以使用同一变量名。局部作用域内声明的变量名在函数外也可以使用,程序运行过程中两者互不干扰。

def myfun():a = 0  # 局部变量a += 1print("myfun a = ", a)def myfun2():a = [1, 2, 3] # 局部变量a = [i + 1 for i in a]print("myfun2  a = ", a)a = 'Hello Python'  # 此处a为全局变量
myfun()
myfun2()
print("函数外 a = ", a)输出结果:
myfun a =  1
myfun2  a =  [2, 3, 4]
函数外 a =  Hello Python

嵌套作用域

嵌套一般是指一个函数嵌套另一个函数的情况,外层函数包含变量的作用范围称为嵌套作用域;
也可以指一个类中包含多个函数时的情况。

# 1.函数嵌套:
def myfun(i):a = [1, 2, 3] #  a 所在范围为嵌套作用域def add():a.append(i)return areturn addtest = myfun(4)
print(test())输出结果:[1, 2, 3, 4]
# 2.类中包含多个函数
class test:b = 1def __init__(self):self.a = 0def myfun2(self):self.a += 1print("a = ", self.a)self.b += 1print("b = ", self.b)test = test()
test.myfun2()输出结果:
a =  1
b =  2

全局作用域

全局作用域范围指的是在一个.py文件内部,在模块顶部声明即可成为全局作用域。
全局作用域中的变量在函数中一般是不可更改的,例如整数,字符等,但对于列表和字典来说可以更改。如想引用并改变全局变量,可使用global关键字。

# 整数,字符串等不可更改
a = 1  # a为全局变量def myfun():a = 2  # 局部变量a += 1print("函数中 a = ", a)myfun()
print("函数外 a = ", a)输出结果:
函数中 a =  3
函数外 a =  1
# 列表,元组等可更改
a = [1, 2, 3]
b = {'语文': 98, "数学": 101}def myfun():a.append(4)b.update({"英语": 103})print("函数中 a = ", a)print("函数中 b = ", b)myfun()
print("函数外 a = ", a)
print("函数外 b = ", b)输出结果:
函数中 a =  [1, 2, 3, 4]
函数中 b =  {'语文': 98, '数学': 101, '英语': 103}
函数外 a =  [1, 2, 3, 4]
函数外 b =  {'语文': 98, '数学': 101, '英语': 103}
# 利用global关键字 引用全局变量
a = 1def myfun():global a  # 使用a之前用globala += 1print("函数中 a = ", a)myfun()
print("函数外 a = ", a)输出结果:
函数中 a =  2
函数外 a =  2

内置作用域

内置作用域是python事先定义的内置模块,例如built-in 模块内的变量,程序启动之后由python虚拟机自动加载,在程序的任何地方都可以使用,例如print函数,随着解释器存在或消亡。

总结

python的四种所用域及其调用顺序,当使用某一变量时,首先在函数内部进行搜索(局部作用域 L),搜索不到便到上层函数或类中进行查找(嵌套作用域 E),再查找不到便到更上层模块中进行查找(全局作用域 G),还查找不到则进入预先定义的(内置作用域 B)中查找,查找不到报错。
变量查找顺序
本人刚入门python的菜鸟一枚,如有错误还请各位不吝赐教,感谢。


http://chatgpt.dhexx.cn/article/UMqqG8wt.shtml

相关文章

linux-虚拟化管理工具

一、虚拟化管理工具 1.虚拟机的安装 用图形方式进行虚拟机的安装 安装镜像 设置虚拟机名字和占用内存大小 2.虚拟机的脚本安装 vim /bin/vm_create.sh 建立在/sbin目录底下,方便以后使用 #!/bin/bash ##幻数,脚本中命令…

常用虚拟机软件推荐

很多时候,由于工作的需要,都需要在不同的系统环境中进行调试开发,要么自己有多台电脑,安装不同的系统,要么给电脑装多系统。但这些都不是很现实,前者要资金,后者想进行系统切换也够费劲的了&…

理解全虚拟、半虚拟以及硬件辅助的虚拟化

接触过的一些搞了几年云计算的童鞋,也没明白常见的几种虚拟机技术方案的异同,比如只是记住了半虚拟要在虚拟机装驱动而全虚拟不需要,也不知道有时候为什么需要打开BIOS里的VT项。本人呢,在看了各种讲解虚拟化的书籍之后&#xff0…

虚拟化(二):虚拟化及vmware workstation产品使用

虚拟化(一):虚拟化及vmware产品介绍 vmware workstation的最新版本是10.0.2。相信大家也都使用过,其中的简单的虚拟机的创建,删除等,都很简单,这里就不再详细说明了,下面我将简单介绍…

什么是虚拟化?

什么是虚拟化? “虚拟化“这个词只要是接触过计算机和网络的,或多或少都有听过。什么虚拟机、存储虚拟化、网络虚拟化、网络功能虚拟化(NFV)、虚拟资源池……今天从什么是虚拟化讲起。 什么是虚拟化 由于虚拟化在各种企业的技术…

虚拟化管理工具的安装与使用

虚拟化管理工具的安装与使用 Libvirt是一个软件的集合,包括API库,后台运行程序(Libvirtd)和命令行工具(virsh)。 Libvirt主要有下面3个功能: 1 虚拟机管理:以虚拟机为对象,Libvirt提供了定义,删除&#x…

开源虚拟化工具VirtualBox安装部署

什么是Virtualbox VirtualBox是一款由Oracle开发和维护的免费开源虚拟化软件,用于在一台计算机上创建和管理多个虚拟机。它允许用户在单个物理计算机上运行多个操作系统,例如Windows、Linux、macOS等。VirtualBox提供了一个虚拟化环境,使用户…

虚拟机的虚拟化如何开启?

大家可以在任务管理器-性能中,查看“虚拟化”是【已启用】还是【已禁用】。如果是禁用了,可以接着往下看我们如何开启虚拟化。 1、关闭电脑的快速启动 控制面板-电源选项-选择电源按钮的功能-更改当前不可用的设置;把关机设置中的【所有都取…

kvm虚拟化管理工具

kvm虚拟化管理工具 一、什么是云计算?二、云计算的基础KVM虚拟化三、安装kvm虚拟化管理工具四、virsh虚拟机的日常操作(开关,挂起虚拟机,导配置文件,磁盘增容,转化磁盘格式等)五、快照管理六、KVM虚拟机的克…

有哪些虚拟化和容器化工具推荐? - 易智编译EaseEditing

以下是几个常用的虚拟化和容器化工具推荐: VMware vSphere: VMware vSphere 是一套完整的虚拟化平台,包括虚拟化服务器、虚拟化存储和虚拟化网络。 它提供了高性能的虚拟机管理和资源调度功能,适用于企业级的虚拟化部署。 Docke…

KVM虚拟化工具简介及安装

文章目录 1. KVM简介2. 安装前提3. KVM安装4. KVM启用5. 虚拟机安装和设置 1. KVM简介 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理&#xff…

虚拟化工具介绍 (资源)

2019独角兽企业重金招聘Python工程师标准>>> 常见的虚拟化产品:docker、Hyper-V、VMware、VirtualBox、XenServer、Kvm、Qemu、OpenVZ、Xen、CloudStack、Openstack、云计算、云其他。 常见的虚拟化 技术 :ESXI、XEN、KVM、HP-V、Docker、Virtual-BOX, 使用最广泛…

AppScan 10中文版

教程: 1、下载解压缩,得到获得AppScan10中文版原程序; 2、首先双击“AppScan_Setup_10.0.0.exe”开始安装,选择简体中文; 3、勾选“我接受许可协议中的全部条款”,然后继续安装; 4、选择软件安…

安全测试工具APPScan下载安装及简单使用

一、安装 百度随便找了个网址下的,解压后如图:AppScan_Std_9.0.3.7_Eval_Win.exe是安装程序,LicenseProvider.dll是替换文件。安装包600多MB建议硬盘留存避免重复下载。 安装简单,注意修改下安装路径,另外会弹出提示是…

AppScan

AppScan是用于web项目的安全测试工具,扫描网站所有url(自动手动),自动测试是否存在各种类型的漏洞。 使用步骤 选择记录 就会弹出appscan自带的浏览器,在其中输入账号密码,appscan就会自动记录 点击下一步…

Appscan测试工具简介

具用途? IBM公司的web扫描工具,对网站等WEB应用进行自动化的应用安全扫描和测试。 如何工作? 探索(Explore):在探索阶段,Appscan试图遍历网站中所有可用的链接,并建立一个层次结构。它发出请求,并根据响…

AppScan9.0

IBM近日发布了最新的Web 安全扫描器Appscan 9.0 ,个人认为是目前商业扫描器中做的最好的,新的版本中增加了许多有用有的新特性,包括如下: .NET 服务器的 glass box 扫描 除了 Java 服务器之外,现在还可以在 .NET 服务…

appscan如何扫描移动应用APP

众所周知,appscan是一款企业级应用安全漏洞扫描神器,appscan怎么扫描移动应用(也就是我们常说的APP)。在此记录一下 Appscan扫描web应用时一般采用自动探索扫描和手动探索扫描两种方式,具体操作可以详见我CSDN另外一篇…

AppScan安装和扫描

AppScan安装步骤: **工作原理:**AppScan 是对网站等 Web 应用进行安全攻击来检查网站是否存在安全漏洞,根据起始页爬取要测的网站下的所有页面,随后利用SQL注入原理进行进行测试是否注入点以及跨站脚本攻击的可能,可能…

AppScan的用法

一、AppScan的工作原理 对一个综合性的大型网站来说,可能存在成千上万的页面。以登录界面为例,至少要输入用户名和密码,即该页面存在两个字段,当提交了用户名和密码等登录信息,网站需要检查是否正确,这就可…