Python 如何比较模块、类和命名空间
Python允许你将定义保存到一个文件中,然后在脚本或解释器的交互实例中使用它们。一个模块是一个包含可以被导入到其他模块或主模块中的定义的文件。
因此,Python模块只是一个包含可重用代码的包。模块存储在一个包含__init.py文件的文件夹中。模块可以同时包含函数和类。使用import关键字来导入模块。包含Python命令和定义的文件被称为模块。
这些以.py结尾的文件包含了Python代码,比如example.py,模块的名称就是example。模块被用来将庞大的应用程序划分为更小、更易管理的文件。使用模块的先决条件是你需要安装Python 3并设置好编程环境。
Python中的模块
模块本质上是一组包含类和函数的文件。你可以使用已存在的模块或者在Python中构建自定义模块。在下面的示例中,你可以了解如何创建一个简单的自定义模块。
示例
让我们来看一个创建简单Python模块的示例。让我们创建一个Python文件ad.py。
def add(x, y):
return (x+y)
输出
保存上面的文件后,会做以下操作。创建了一个名为ad.py的模块。
Python中的命名空间
在Python中,我们可以将一个模块的定义导入到另一个模块或交互解释器中。为了实现这一点,我们使用import关键字。命名空间是一种实现作用域的方法。Python中的每个包、模块、类、函数和方法函数都有自己的“命名空间”,其中解析变量名。
当函数、模块或包被评估时(即执行开始时),就会创建一个命名空间。将其视为“评估上下文”。当一个函数完成执行时,命名空间将被移除。变量也已被移除。如果在局部命名空间中找不到名称,则还会使用全局命名空间。
Python程序中有四种不同类型的命名空间−
- 内置的
-
全局的
-
封闭的
-
局部的
它们的生命周期不同。命名空间会在Python程序执行过程中根据需要创建和删除。通常会有很多活动的命名空间。
内置命名空间
Python的所有内置对象都有名称,这些名称都包含在内置命名空间中。当Python运行时,这些对象是始终可访问的。
示例
例如,当我们执行赋值a = 2时,a是我们给它的名字,2是存储在内存中的对象。通过内置函数id,我们可以获得某个对象()在RAM中的地址。让我们看看它的应用。
a = 2
print('id(2) =', id(2))
print('id(a) =', id(a))
输出
获得的输出如下:
id(2) = 140378523304208
id(a) = 140378523304208
全局命名空间
多个命名空间可以包含相同的对象名称,因为每个命名空间都将与其他命名空间保持独立。
示例
下面的示例可用于了解全局命名空间。
count = 10
def method():
global count
count = count + 1
print(count)
method()
输出
获得的输出如下。
11
本地命名空间
一个类、函数、循环或任何其他类型的代码块都有一个声明的本地命名空间。函数或代码块的定义的名称仅在这些区域中有效。变量名只可以在它们定义的函数或代码块中访问。
示例
在这个示例中,函数add定义了本地命名空间中的变量num1、num2和temp。
N1 = 20
N2 = 30
def add(num1, num2):
temp = num1 + num2
return temp
输出
得到的输出如下。
50