Python命名空间和作用域 总结 emmm,这一块讲了2个内容,一个是命名空间,一个是作用域。一个一个说吧 命名空间 A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries 上边这段是官方文档定义的,简单来说就是名字到对象的映射,我们知道,python的一切都是对象,你所定义的变量名其实只是个引用。这样就好理解了。python的命名空间由python数据结构字典实现。 python的命名空间细分的话有三种。如图所示。 这 Python中的命名空间和作用域是理解程序执行逻辑和变量访问规则的关键概念。命名空间(Namespace)可以被看作是一个从名字到对象的映射,它决定了变量名如何关联到具体的对象。在Python中,大多数命名空间是通过字典数据结构实现的。Python的命名空间有三种主要类型:局部(Local)、全局(Global)和内置(Built-in)。 1. 局部命名空间(Local Namespace):在函数或类方法内部定义的变量属于局部命名空间。当在这些区域内引用一个变量时,Python首先会在当前局部命名空间中查找该变量。 2. 全局命名空间(Global Namespace):在模块级别定义的变量,即不在任何函数或类内定义的变量,属于全局命名空间。全局变量在整个模块中都可访问。 3. 内置命名空间(Built-in Namespace):包含Python解释器内置的函数和常量,如`len()`、`str()`等。 作用域(Scope)则规定了在哪些文本区域(代码块)内可以无限制地直接访问某个命名空间。根据官方文档,作用域是一个Python程序的文本区域,其中可以直接访问一个命名空间。Python的作用域规则遵循LEGB原则: - L(Local):局部作用域,指的是当前函数或类方法内的变量。 - E(Enclosing):封闭作用域,指的是外部函数或类,但不是全局作用域。 - G(Global):全局作用域,指的是模块级别的变量。 - B(Built-in):内置作用域,包含了Python的内置函数和常量。 在函数内部,如果尝试访问一个未声明的变量,Python会按照LEGB顺序依次在这些作用域中查找。如果没有找到,就会引发`NameError`。 `global`关键字用于在函数内部声明并修改全局变量的值。例如: ```python global_var = 'haha' def tool(): global global_var global_var = '22' print(global_var) tool() print(global_var) ``` 在这个例子中,`global`关键字告诉Python `global_var` 是全局变量,因此在`tool()`函数中对其的修改会影响到全局。 `nonlocal`关键字用于修改外部非局部(但不是全局)作用域的变量,通常用于嵌套函数: ```python def outer(): var = 1 def inner(): nonlocal var var = 2 inner() print(var) outer() ``` 在这里,`nonlocal`声明`var`是`outer()`函数的作用域内的变量,而不是`inner()`函数的局部变量。 了解命名空间和作用域对于编写清晰、可维护的Python代码至关重要。避免全局变量的滥用可以提高代码的可读性和模块化程度。同时,正确使用`global`和`nonlocal`可以帮助你在需要时灵活地跨越作用域边界,但应谨慎使用,因为它们可能会引入不必要的复杂性。在编程实践中,优先考虑使用局部变量和参数传递来管理状态。
- 粉丝: 6
- 资源: 888
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- LCD1602电子时钟程序
- 西北太平洋热带气旋【灾害风险统计】及【登陆我国次数评估】数据集-1980-2023
- 全球干旱数据集【自校准帕尔默干旱程度指数scPDSI】-190101-202312-0.5x0.5
- 基于Python实现的VAE(变分自编码器)训练算法源代码+使用说明
- 全球干旱数据集【标准化降水蒸发指数SPEI-12】-190101-202312-0.5x0.5
- C语言小游戏-五子棋-详细代码可运行
- 全球干旱数据集【标准化降水蒸发指数SPEI-03】-190101-202312-0.5x0.5
- spring boot aop记录修改前后的值demo
- 全球干旱数据集【标准化降水蒸发指数SPEI-01】-190101-202312-0.5x0.5
- ActiveReports