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

python中有几种作用域

在 Python 中,作用域决定了变量的可见性和生命周期。Python 主要有以下四种作用域:

1. 局部作用域(Local Scope)

   - 在函数或方法内部定义的变量属于局部作用域。
   - 这些变量只能在函数或方法内部访问。 


   def my_function():
       x = 10  # 局部变量
       print(x)

   my_function()
   # print(x)  # 这里会报错,因为 x 在函数外部不可见
 

2. 嵌套作用域(Enclosing Scope)

   - 在嵌套函数中,外层函数的变量对内层函数可见。
   - 内层函数可以访问外层函数的变量,但不能直接修改(除非使用 `nonlocal` 关键字)。   

   def outer():
       y = 20  # 嵌套作用域变量
       def inner():
           print(y)  # 内层函数可以访问外层函数的变量
       inner()

   outer()

3. 全局作用域(Global Scope)

   - 在模块级别定义的变量属于全局作用域。
   - 全局变量在整个模块中都可以访问,但在函数内部修改全局变量需要使用 `global` 关键字。  

   z = 30  # 全局变量

   def my_function():
       global z
       z = 40  # 修改全局变量
       print(z)

   my_function()
   print(z)  # 输出 40,全局变量已被修改

4. 内置作用域(Built-in Scope)

   - 包含 Python 内置的函数和对象,如 `print`、`len` 等。
   - 这些名称在任何地方都可以访问,除非被局部或全局作用域中的同名变量覆盖。  

   print(len("hello"))  # 使用内置函数 len

   def my_function():
       len = 10  # 局部变量覆盖了内置函数 len
       print(len)

   my_function()
   print(len("hello"))  # 内置函数 len 仍然可用

作用域查找顺序

当访问一个变量时,Python 会按照以下顺序查找:
1. 局部作用域(Local Scope)
2. 嵌套作用域(Enclosing Scope)
3. 全局作用域(Global Scope)
4. 内置作用域(Built-in Scope)

如果找不到变量,Python 会抛出 `NameError` 异常。

总结

- 局部作用域:函数内部的变量。
- 嵌套作用域:外层函数的变量对嵌套函数可见。
- 全局作用域:模块级别的变量。
- 内置作用域:Python 内置的函数和对象。

当我们理解这些作用域之后能够有助于我们更好地管理变量和避免命名冲突。

相关文章:

  • 传输层自学
  • 配置单区域OSPF实验和报文抓包和分析
  • 51单片机的工作方式
  • 从模型到应用:大语言模型生态系统完全指南
  • 1.Windows+vscode+cline+MCP配置
  • HarmonyOS NEXT开发进阶(十三):网络请求封装
  • 目标:掌握无位置传感器(FOC)控制PMSM的设计与实现
  • 【go】Go 语言中 errors.Is 和 errors.As 的区别
  • RxSwift 学习笔记第三篇之RxSwift的Observer
  • WIN11开发环境变量记录
  • pyjail逃逸姿势
  • 计算机四级 - 数据库原理 - 第3章 「关系数据库系统概述」
  • React(二):JSX语法解析+综合案例
  • Java 大视界 -- Java 大数据在智慧交通自动驾驶仿真与测试数据处理中的应用(136)
  • 一次Linux下 .net 调试经历
  • 游戏成瘾与学习动力激发策略研究——了解“情感解离”“创伤理论”
  • 电磁兼容|RC电路
  • C或C++中实现数据结构课程中的链表、数组、树和图
  • count(1),count(列名),count(*)详解!
  • 系统思考全球化落地
  • 科学家为AI模型设置“防火墙”,以防止被不法分子滥用
  • 辽宁辽阳市白塔区一饭店发生火灾,事故已造成22人遇难3人受伤
  • 黄永年:说狄仁杰的奏毁淫祠
  • 四川邻水县县长石国平拟任县(市、区)党委书记
  • 清华数字政府与治理研究院揭牌:服务数字政府建设需求
  • “梅花奖”快闪走入上海张园,朱洁静在石库门前起舞