Namespaces and Scope: multiple namespaces
对象和名称的归属--Search closure enclosing
Local_Global_built-in
内置名字空间,任何模块均可访问它,它存放着内置的函数和异常。
全局名字空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。 global声明 是对整个环境下的变量起作用
闭包: 闭包通常与函数相关联
局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量
1. the local space
locals()是Python中一个非常有用的内置函数,尤其是在调试和检查当前作用域的局部变量
locals()函数不需要任何参数,并且返回当前局部变量作用域的内容
2 Enclosed(闭包作用域):闭包中外部函数定义的变量,但非全局变量
Enclosed 由闭包函数和其外部函数共同创建的一个作用域
闭包(Closure)
闭包是由一个函数以及创建该函数时的作用域中变量的引用环境共同组成的
创建闭包--使用闭包
内层函数不仅可以访问,还要可以修改外层函数的变量,那么需要用到 nonlocal声明
nonlocal 关键字是定义在闭包里面的
d.__closure__
闭包的__closure__方法,可以查看每个cell对象的内容。
for i in d.__closure__:
print(i.cell_contents)
cell_contents 解释了局部变量在脱离函数后仍然可以在函数之外被访问的原因,
因为变量被存储在cell_contents中了
3.globals() 以及 dir() # 获得当前模块的属性列表
Modules are Python files, and they contain objects such as functions that can be imported and used by other programs
__dict__ This dictionary is the namespace for the module.
__name__
当 Python 文件作为一个独立脚本运行时,__name__ 被设置为 "__main__",而在被其他模块导入时,__name__ 被设置为该模块的名称
__file__
是一个保存着当前模块所在文件名的全路径的字符串变量,用于获取当前脚本的绝对路径
dir()带参数时,返回参数的属性、方法列表
4.built-ins 默认导入 has a dict attribute
two default modules without requiring an import: the module main and the module builtins .
builtins.py 模块,是python的内建模块,在运行时会自动导入该模块。在该模块中定义了很多我们常用的内置函数,比如print,input 等。
builtins是一个内置模块,它在Python解释器启动时自动加载,并包含了一组Python的内置函数、异常和常量
Python 的内置模块通常被编译到 Python 解释器-builtins.py看起来只包含了空函数定义
实际上是通过Python的C API接口调用C语言实现的底层函数
解释器实现的,它们的具体实现通常是用C语言编写 __builtins__.__dict__ 约有151个函数和变量
moduleSpec
classbuilt-in function
Ellipsis 对象: 在python代码中通常写作 … ,
Exception TypeError
【python】Python中闭包的是什么,闭包原理分析与应用实战 https://blog.csdn.net/littlefun591/article/details/140492786
The Practice of Computing Using Python, 2nd International Edition
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步