Python作用域及其应用

Python的作用域规则决定了变量在代码中的可见性和访问性。全局作用域中定义的变量可以在整个程序中访问,而局部作用域中定义的变量则只能在其被创建的函数或代码块中访问。

全局作用域与局部作用域

全局作用域中的变量通常在程序的顶层定义,可以被整个程序的任意部分访问。例如:

global_var = 10  # 全局变量def my_function():print(global_var)  # 可以访问全局变量global_varmy_function()
print(global_var)  # 也可以在函数外部访问

局部作用域则是在函数内部定义的作用域,变量只在函数内部可见,函数外部无法访问。例如:

def my_function():local_var = 20  # 局部变量print(local_var)my_function()
print(local_var)  # 这里会报错,因为local_var不在这个作用域内

函数作用域与嵌套作用域

在Python中,函数作用域指的是函数内部定义的作用域,函数参数和局部变量都属于函数作用域。例如:

def outer_function():outer_var = 30  # outer_var是外部函数的局部变量def inner_function():inner_var = 40  # inner_var是内部函数的局部变量print(outer_var)  # 内部函数可以访问外部函数的变量inner_function()print(inner_var)  # 这里会报错,因为inner_var不在outer_function的作用域内outer_function()

嵌套作用域是指函数内部可以再定义函数,每个内部函数都可以访问其外部函数的变量。这种结构形成了一个作用域的层次结构,内部作用域可以访问外部作用域的变量,但反之则不行。

LEGB规则:变量查找顺序

Python中变量的查找顺序遵循LEGB规则:

  • Local(局部):在当前函数内部查找。
  • Enclosing function locals(外部嵌套函数的局部):在包含当前函数的外部函数内部查找。
  • Global module(全局模块):在全局作用域内查找。
  • Built-in(内置模块):在Python内置的命名空间中查找。

例如:

x = 'global'def outer():x = 'outer local'def inner():x = 'inner local'print(x)  # 首先在内部函数的局部作用域找到xinner()print(x)  # 然后在外部函数的局部作用域找到xouter()
print(x)  # 最后在全局作用域找到x

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

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

相关文章

RK3568驱动指南|第十五篇 I2C-第183章 SMBus总线介绍

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

商业模式的6大要素,新零售起盘策划公司,顶层设计方案服务商

在当今的商业世界中,企业通过不同的商业模式来实现自身的发展和利润。下面介绍六种常见的商业模式。 坐标:厦门,我是易创客肖琳 深耕社交新零售行业10年,主要提供新零售系统工具及顶层商业模式设计、全案策划运营陪跑等。 1、互联…

常用知识点问答

目录 描述 Nginx location转发时root和alias指定路径的区别? LVS Haproxy Nginx负载均衡都有哪些常用的调度算法?(每种要求不少于5个) Nginx 4层反向代理和7层反向代理有什么区别?以及如何配置? 如何实现Nginx负载均衡的高可用…

使用DelayQueue实现延迟任务

有时候,我们需要在当前时间点往后延迟一定时间,再执行任务,该怎么实现呢? 1. 延迟任务方案 延迟任务的实现方案有很多,常见的有四类: DelayQueueRedissonMQ时间轮原理JDK自带延迟队列,基于阻塞…

实验室必备神器:PFA气体装置,精准控制每一丝气体!

PFA气体吸收装置是一种高效的气体处理设备,主要用于捕获、存储和转移各种气体样本,特别是在需要高纯度气体的应用场合中表现出色。以下是关于PFA气体吸收装置的详细介绍: 一、特点与优势 1. 高效吸收:采用先进的物理和化学吸收技术…

C++ double free

C double free 原因 原因 局部指针重复释放 指针非 NULL时释放一次,且 function结束时又free一次循环越界,导致内存越界

01:Linux的基本命令

Linux的基本命令 1、常识1.1、Linux的隐藏文件1.2、绝对路径与相对路径 2、基本命令2.1、ls2.2、cd2.3、pwd / mkdir / mv / touch / cp / rm / cat / rmdir2.4、ln2.5、man2.6、apt-get 本教程是使用的是Ubuntu14.04版本。 1、常识 1.1、Linux的隐藏文件 在Linux中&#xf…

ubuntu虚拟机安装

Ubuntu18.04安装教程(VMware)

小型气象站是干什么用的?组成?

小型气象站是一款小型的可监测气象环境参数的气象监测仪器。一般可监测空气温湿度,光照强度,大气压力,总辐射,降雨量,风速,风向等参数。通过监测到的这些参数便于人们生产生活参考。 常规的小型气象站主要…

MATLAB将两个折线图画在一个图里

界面如图 输入行数和列数,点击开始填入数据,其中第一列为x值,后面几列,每一列都是y坐标值,填好后点击画在同一张图里即可。点击置零就把所有数变成0,另外也可以选择节点样式。 .mlapp格式的文件如下 夸克…

离线运行Llama3:本地部署终极指南

4月18日,Meta在官方博客官宣了Llama3,标志着人工智能领域迈向了一个重要的飞跃。经过笔者的个人体验,Llama3 8B效果已经超越GPT-3.5,最为重要的是,Llama3是开源的,我们可以自己部署! 本文和大家…

师傅们 ~ 2024HW一手资料

各位师傅们,2024HW来了! 从2026年开始,随着我国对网络安全的重视,涉及单位不断增加,越来越多单位和个人都加入到HW当中。 2024HW就在眼前, 那么还有不了解或者还没投简历面试的朋友们,需要注意…

有哪些手持小风扇品牌推荐?五大手持小风扇诚意推荐!

在炎炎夏日,一款便携且高效的手持小风扇无疑是消暑的必备神器。为了帮助大家轻松应对酷暑,我们精心挑选了五大手持小风扇品牌进行诚意推荐。这些品牌不仅拥有出色的降温效果,更在外观设计、便携性、续航能力及操作便捷性上表现卓越。接下来&a…

AI学习指南机器学习篇-随机森林模型应用与Python实践

AI学习指南机器学习篇-随机森林模型应用与Python实践 人工智能(AI)和机器学习(ML)的发展已经深入到了我们的日常生活中。在这种情况下,了解不同的机器学习算法和工具变得越来越重要。随机森林是一种强大且灵活的机器学…

华为HCIP Datacom H12-821 卷22

1.单选题 下面关于验证一个接收到的Hello报文是否合法描述错误的是: A、所接收的Hello报文中RouterDeadIntera1字段必须和接收端口的配置一致 B、如果接收端口的网络类型为,点对点类型或者虚链路,则不检查NetworkMask字段 C、如果接妆端口的网络类型是广播型点到多点…

互联网医院系统源码解析:如何打造智能数字药店APP?

在互联网技术飞速发展的今天,医疗行业也在不断与之融合,互联网医院系统应运而生。特别是智能数字药店APP的兴起,使得医疗服务变得更加便捷、高效。本文将深入解析互联网医院系统源码,探讨如何打造一个智能的数字药店APP。 一、互…

KICAD针对线宽布线操作

如果在刚开始没有设置好布线宽度,KiCad Pcbnew 在布好线后经常会需要修改布线宽度。 下面有几种常用的修改多端线宽的方法 1、快捷键修改整个网络的线宽。 按 I 键选中整条网络,再按 E 键,即可修改整网络的线宽。 2、修改多条线的…

仿论坛项目--初识Spring Boot

1. 技术准备 技术架构 • Spring Boot • Spring、Spring MVC、MyBatis • Redis、Kafka、Elasticsearch • Spring Security、Spring Actuator 开发环境 • 构建工具:Apache Maven • 集成开发工具:IntelliJ IDEA • 数据库:MySQL、Redi…

合同网协议实现无人机分布式任务分配的原理介绍和代码逻辑框架

无人机任务分配领域中的合同网协议(Contract Net Protocol, CNP)算法是一种基于协商机制的协作方法,该算法模拟了人类商业活动中的招标-投标-中标过程,通过节点之间的招投标机制进行任务分配,旨在使系统以较低的代价、…

RAG简要教程

RAG(Retrieval-Augmented Generation) RAG(Retrieval-Augmented Generation)是一种增强大型语言模型(LLM)性能的方法。它结合了信息检索(Retrieval)和文本生成(Generati…