本文概述
- from..import语句
- from.. import *语句
- 重命名导入的模块
简而言之, 模块是由Python代码组成的文件。它可以定义函数, 类和变量, 还可以包含可运行的代码。任何Python文件都可以作为模块引用。包含Python代码的文件, 例如:test.py, 被称为模块, 其名称为test。
编写模块的方法有很多种, 但是最简单的方法是创建一个扩展名为.py的文件, 其中包含函数和变量。
在开始编写自己的模块之前, 建议你阅读我们的Python数据科学入门课程, 该课程涵盖Python编程语言的基础知识。
本教程将指导你编写自己的Python模块。你将学习以下主题:
- Python中的import语句
- 编写模块
- 有关进口声明的更多信息
- 模块搜索路径
- 字节编译文件
- dir()函数 :target:before { content:""; display:block; height:150px; margin:-150px 0 0; } h3 {font-weight:normal; margin-top:.5em} h4 { font-weight:lighter }
import math#You need to put this command, `import` keyword along with the name of the module you want to import
num = 4
print(math.sqrt(num))#Use dot operator to access sqrt() inside module "math"
出于效率原因, 每个模块在每个解释器会话中仅导入一次。因此, 如果你更改模块, 则必须重新启动解释器;如果它只是你要进行交互测试的一个模块, 请使用reload(), 例如:reload(module_name)。
现在你已经了解了如何在程序中导入模块, 是时候编写自己的模块并在另一个程序中使用它了。编写模块就像编写其他任何Python文件一样。让我们开始编写一个函数, 以在文件Calculation.py中添加/减去两个数字。
def add(x, y):
return (x+y)
def sub(x, y):
return (x-y)
如果尝试在命令行上执行此脚本, 则不会发生任何事情, 因为你尚未指示程序执行任何操作。在名称为module_test.py的同一目录中创建另一个python脚本, 并将以下代码写入其中。
import calculation#Importing calculation module
print(calculation.add(1, 2))#Calling function defined in add module.
如果执行module_test.py, 你将看到” 3″ 作为输出。当解释器遇到import语句时, 它在代码中导入了计算模块, 然后通过使用点运算符可以访问add()函数。
Tere是导入模块的更多方法:
- from..import语句
- from.. import *语句
- 重命名导入的模块
这是一个示例, 说明from..import的用法
from calculation import add
print(add(1, 2))
在上面的示例中, 仅add()函数被导入和使用。注意使用add()吗?你现在可以直接访问它, 而无需使用模块名称。你也可以导入多个属性, 在import语句中用逗号分隔。看下面的例子:
from calculation import add, sub
from.. import *语句你可以使用此语句导入模块的所有属性。这将使导入模块的所有属性在代码中可见。
这是一个示例, 用于说明from .. import *的用法:
from calculation import *
print(add(1, 2))
print(sub(3, 2))
请注意, 在专业领域中, 应避免使用from..import和from..import *, 因为这会使代码的可读性降低。
重命名导入的模块你可以重命名要导入的模块, 这在你想为模块提供更有意义的名称或模块名称太大而无法重复使用时非常有用。你可以使用as关键字对其重命名。以下示例说明了如何在程序中使用它。
import calculation as cal
print(cal.add(1, 2))
通过将计算重命名为cal, 你节省了一些键入时间。
请注意, 由于你的程序不再能够识别计算, 因此你现在不能再使用calculation.add(1, 2)。
你可能需要模块在不同的程序/项目中使用, 并且它们在目录中的物理位置可能不同。如果要使用其他目录中的模块, 则可以使用Python提供的一些选项。
导入名为计算的模块时, 解释器首先搜索具有该名称的内置模块。如果未找到, 那么它将在变量sys.path给出的目录列表中搜索名为Calculation.py的文件。
sys.path包含以下位置:
- 包含输入脚本的目录(或当前目录)。
- PYTHONPATH(目录名称列表, 语法与shell变量PATH相同)。
- 取决于安装的默认值。
import sys
sys.path.append('/home/test/')import calculation
print(calculation.add(1, 2))
导入模块会增加程序的执行时间, 因此Python有一些技巧来加快它的速度。一种方法是创建扩展名为.pyc的字节编译文件。
在内部, Python将源代码转换为称为字节码的中间形式, 然后将其转换为计算机的本地语言, 然后运行它。下次从其他程序导入模块时, 此.pyc文件很有用-由于已完成了导入模块所需的部分处理, 因此它会更快。同样, 这些字节编译的文件与平台无关。
请注意, 这些.pyc文件通常与相应的.py文件位于同一目录中。如果Python没有写该目录中文件的权限, 则不会创建.pyc文件。
dir()函数用于查找模块中定义的所有名称。它返回包含模块中定义的名称的字符串排序列表。
import calculation
print(test.add(1, 2))
print(dir(calculation))
输出如下:
[‘ __builtins __’ , ‘ __ cached __’ , ‘ __ doc __’ , ‘ __ file __’ , ‘ __ loader __’ , ‘ __ name __’ , ‘ __ package __’ , ‘ __ spec __’ , ‘ add’ , ‘ sub’ ]
在输出中, 你可以看到在模块add&sub中定义的函数的名称。属性__name__包含模块的名称。所有以下划线开头的属性都是与模块关联的默认python属性。
需要创建模块才能更好地管理代码和可重用性。 Python为你提供了一些内置模块, 可以使用import关键字将其导入。 Python还允许你创建自己的模块, 并在程序中使用它们。它为你提供了字节编译的文件, 从而克服了使用模块的成本, 从而使执行速度更快。你可以使用dir()来了解在程序中使用的模块中定义的属性, 这既可以在预定义模块中使用, 也可以在用户定义模块中使用。
【在Python中使用模块】如果你想了解有关Python的更多信息, 可以看看我们的数据科学中级Python课程。
推荐阅读
- R中的层次聚类
- 如何在SQL中执行Python/R
- 图像超分辨率使用多解码器框架
- 使用Python和BeautifulSoup 4抓取Reddit
- u盘病毒查杀|图文详细说明U盘病毒查杀工具
- u盘装系统_图文详细说明怎样用U盘装系统
- 如何运用u盘给笔记本做系统,图文详细说明安装办法
- u盘测试工具,图文详细说明运用推荐
- usb接口供电不足,图文详细说明处理办法