你如何比较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程序执行过程中根据需要创建和删除。通常会同时激活许多命名空间。
内置命名空间
所有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
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP