Python中作用域与名字空间是如何相互关联并实例化的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计5933个文字,预计阅读时间需要24分钟。
变量只是一个符号+从解释器的角度来观察,变量只是一个泛型指针+PyObject*;而从Python的角度来看,变量只是一个用来和对象进行绑定的名字、或者是符号。变量的定义本质上就是建立名字与对象之间的关联。
变量只是一个符号从解释器的角度来看,变量只是一个泛型指针 PyObject *;而从 Python 的角度来看,变量只是一个用来和对象进行绑定的名字、或者说符号。
变量的定义本质上就是建立名字和对象之间的约束关系,所以 a = 1 这个赋值语句本质上就是将 a 和 1 绑定起来,让我们通过 a 这个符号可以找到对应的 PyLongObject。
除了变量赋值,创建函数、类也相当于定义变量,或者说完成名字和对象之间的绑定。
def foo(): pass class A(): pass
创建一个函数也相当于定义一个变量,会先根据函数体创建一个函数对象,然后将符号 foo 和函数对象绑定起来。所以函数名和函数体之间是分离的,同理类也是如此。
import os
导入一个模块,也是在定义一个变量。import os 相当于将名字 os 和模块对象绑定起来,通过 os 可以找到指定的模块对象。
再比如 import numpy as np 当中的 as 语句同样是在定义变量,将名字 np 和对应的模块对象绑定起来,以后就可以通过 np 这个名字去获取指定的模块了。
本文共计5933个文字,预计阅读时间需要24分钟。
变量只是一个符号+从解释器的角度来观察,变量只是一个泛型指针+PyObject*;而从Python的角度来看,变量只是一个用来和对象进行绑定的名字、或者是符号。变量的定义本质上就是建立名字与对象之间的关联。
变量只是一个符号从解释器的角度来看,变量只是一个泛型指针 PyObject *;而从 Python 的角度来看,变量只是一个用来和对象进行绑定的名字、或者说符号。
变量的定义本质上就是建立名字和对象之间的约束关系,所以 a = 1 这个赋值语句本质上就是将 a 和 1 绑定起来,让我们通过 a 这个符号可以找到对应的 PyLongObject。
除了变量赋值,创建函数、类也相当于定义变量,或者说完成名字和对象之间的绑定。
def foo(): pass class A(): pass
创建一个函数也相当于定义一个变量,会先根据函数体创建一个函数对象,然后将符号 foo 和函数对象绑定起来。所以函数名和函数体之间是分离的,同理类也是如此。
import os
导入一个模块,也是在定义一个变量。import os 相当于将名字 os 和模块对象绑定起来,通过 os 可以找到指定的模块对象。
再比如 import numpy as np 当中的 as 语句同样是在定义变量,将名字 np 和对应的模块对象绑定起来,以后就可以通过 np 这个名字去获取指定的模块了。

