如何在Python中比较模块、类和命名空间?


Python允许你将定义保存到文件中,然后在脚本或交互式解释器实例中使用它们。模块是一个包含可以导入到其他模块或主模块中的定义的文件。

因此,Python模块只不过是一个包含可重用代码的包。模块存储在一个包含__init__.py文件的文件夹中。模块可以包含函数和类。import关键字用于导入模块。包含Python命令和定义的文件称为模块。

这些名为.py的文件包含Python代码,例如example.py,模块名称为example。模块用于将大型应用程序分解成更小、更易于管理的文件。使用模块的先决条件是你应该安装Python 3并设置编程环境。

Python中的模块

模块本质上是一组包含类和函数的文件。你可以使用现有的模块或在python中构建自定义模块。在下面的示例中,你可以了解如何创建一个简单的用户定义模块。

示例

让我们来看一个创建简单python模块的例子。让我们创建一个名为ad.py的python文件。

def add(x, y): return (x+y)

输出

保存上述文件后,将执行以下操作:创建一个名为ad.py的模块。

Python中的命名空间

在Python中,我们可以将定义从一个模块导入到另一个模块或交互式解释器中。为此,我们使用import关键字。命名空间是一种实现作用域的方法。每个包、模块、类、函数和方法函数在Python中都有自己的“命名空间”,变量名在其中解析。

当函数、模块或包被求值(即执行开始时)时,就会创建一个命名空间。可以将其视为“求值上下文”。例如,当函数完成执行时,命名空间将被移除。变量已被移除。如果在局部命名空间中找不到名称,还会使用全局命名空间。

Python程序中有四种不同的命名空间:

  • 内置

  • 全局

  • 闭包

  • 局部

这些具有不同的生命周期。命名空间根据需要在Python程序执行过程中创建和删除。通常会有许多命名空间同时处于活动状态。

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

内置命名空间

所有Python的内置对象都有名称,这些名称都包含在内置命名空间中。运行Python时,这些始终可用。

示例

例如,当我们执行赋值a = 2时,a是我们赋予它的名称,2是存储在内存中的对象。通过内置函数id,我们可以获取某个对象在内存中的地址()。让我们检查一下它的应用。

Open Compiler
a = 2 print('id(2) =', id(2)) print('id(a) =', id(a))

输出

获得的输出如下。

id(2) = 140378523304208
id(a) = 140378523304208

全局命名空间

多个命名空间可以包含相同的对象名称,因为每个命名空间都保持与其他命名空间的隔离。

示例

下面的例子可以用来理解全局命名空间。

Open Compiler
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

更新于:2023年5月11日

634 次浏览

启动你的职业生涯

完成课程获得认证

开始
广告