如何在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,我们可以获取某个对象在内存中的地址()。让我们检查一下它的应用。
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