当前位置: 首页 > news >正文

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.lryc.cn/news/390182.html

相关文章:

  • 谷歌上架,应用被Google play下架之后,活跃用户会暴跌?这是为什么?
  • web安全渗透测试十大常规项(一):web渗透测试之Fastjson反序列化
  • Unity 3D软件下载安装;Unity 3D游戏制作软件资源包获取!
  • PyTorch之nn.Module与nn.functional用法区别
  • 2024.06.24 校招 实习 内推 面经
  • 【C++】using namespace std 到底什么意思
  • 基于ESP32 IDF的WebServer实现以及OTA固件升级实现记录(三)
  • 116-基于5VLX110T FPGA FMC接口功能验证6U CPCI平台
  • Android - Json/Gson
  • 盲信号处理的发展现状
  • 二轴机器人装箱机:重塑物流效率,精准灵活,引领未来装箱新潮流
  • 使用python做飞机大战
  • Python面向对象编程:派生
  • 华为仓颉编程语言
  • 【微信小程序开发实战项目】——如何制作一个属于自己的花店微信小程序(2)
  • 解锁数据资产的无限潜能:深入探索创新的数据分析技术,挖掘其在实际应用场景中的广阔价值,助力企业发掘数据背后的深层信息,实现业务的持续增长与创新
  • Bridging nonnull in Objective-C to Swift: Is It Safe?
  • 算法训练 | 图论Part1 | 98.所有可达路径
  • 【JVM基础篇】垃圾回收
  • Spark join数据倾斜调优
  • YOLOv5初学者问题——用自己的模型预测图片不画框
  • 【linux学习---1】点亮一个LED---驱动一个GPIO
  • Redis分布式锁代码实现详解
  • Day01-02-gitlab
  • PyCharm远程开发配置(2024以下版本)
  • 解决Ucharts在小程序上的层级过高问题
  • 重保期间的网站安全防护:网站整站锁的应用与实践
  • Qt自定义类型
  • UE4_材质_材质节点_DepthFade
  • 如何对GD32 MCU进行加密?