前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python基础:创建并使用自定义模块

Python基础:创建并使用自定义模块

作者头像
fanjy
发布2022-06-04 09:50:36
1.1K0
发布2022-06-04 09:50:36
举报
文章被收录于专栏:完美Excel完美Excel

标签:Python

Python模块只是一个Python文件或一组Python文件。使用Python模块,可以编写可重用和更有组织的代码。例如,可以编写一个执行CSV文件处理任务的通用Python模块,世界各地的数据科学家都可以使用该模块来读取、写入和操作CSV文件。

Python附带了成百个提供不同功能的默认模块。然而,也可以用Python编写自己的自定义模块。

创建自定义Python模块

要在Python中创建自定义模块,所需做的是创建一个新的Python文件。

创建一个名为newmodule.py的Python文件,在其中输入三个函数:print_text(),find_log(),find_exp(),如下所示。由于模块只是另一个Python文件,因此可以在Python模块内定义任何内容,例如类、方法、数据结构等。

newmodule.py

代码语言:javascript
复制
import numpy as np
def print_text():
   print("这条消息来自于外部模块")
def find_log(num):
   return np.log(num)
def find_exp(num):
   return np.exp(num)

现在,可以在其他Python应用程序和文件中使用在newmodule中定义的三个函数。

要使用自定义Python模块,Python解释器应该能够访问包含自定义模块的Python文件。有三个位置可以保存包含自定义模块的Python文件,以便Python解释器可以访问它。

1.与访问模块的Python文件位于同一目录中。

2.在另一个目录中,该目录必须添加到Python解释器的路径中。

3.在Python解释器的任意默认路径内。

导入同一目录中的自定义模块

在你创建的newmodule.py文件相同的目录中创建另一个名为mainfile.py的文件。

要导入自定义模块,可以使用import语句后跟模块名称。此语法类似于导入默认或已安装的Python模块。下面的脚本导入newmodule模块,该模块由与mainfile.py文件存储在同一目录中的newmodule.py文件创建。注意,要导入模块,只需指定该模块名称,而不需要“.py”扩展名。

接下来,脚本调用在newmodule模块中定义的三个函数。从另一个模块调用函数的一种方法是指定模块名称,后跟点“.”运算符和函数名,如下面的脚本所示:

mainfile.py

代码语言:javascript
复制
import newmodule
newmodule.print_text()
print("这条消息来自主文件")
log16 = newmodule.find_log(16)
print(log16)
exp16 = newmodule.find_exp(16)
print(exp16)

执行上面的脚本,应该看到以下输出,这表明能够成功导入newmodule模块。

输出:

图1

如果你不喜欢键入长模块名称,可以在通过as运算符在导入模块时为其指定别名,如下所示:

mainfile.py

代码语言:javascript
复制
import newmodule as nm
nm.print_text()
print("这条消息来自主文件")
log16 = nm.find_log(16)
print(log16)
exp16 = nm.find_exp(16)
print(exp16)

注意,现在只需键入nm,而不是每次要调用函数时都键入newmodule。

如果知道只需要模块中的某些函数,那么可以通过从模块中导入那些特定的函数或特性,而不是导入整个模块,使其更加简单。为此,可以使用from关键字。例如,下面的脚本从newmodule模块导入find_log()函数。在这种情况下,根本不需要使用点运算符将函数名附加到模块名,相反,可以直接调用该函数名。

mainfile.py

代码语言:javascript
复制
from newmodule import find_log
log16 = find_log(16)
print(log16)

同样的方法,可以从模块中导入多个函数。例如,下面的脚本从newmodule模块中导入find_log()函数和find_exp()函数。

mainfile.py

代码语言:javascript
复制
from newmodule import find_log,find_exp
log16 = find_log(16)
print(log16)
exp16 = find_exp(16)
print(exp16)

不过,有一种更简单的方法可以避免使用点符号。如果要从Python模块导入所有内容,只需使用星号“*”运算符即可。这样,就可以使用模块中的所有函数、类等,而无需使用点运算符将该功能附加到模块名称中。下面是一个例子。

mainfile.py

代码语言:javascript
复制
from newmodule import *
log16 = find_log(16)
print(log16)
exp16 = find_exp(16)
print(exp16)

从其他不同路径中导入自定义模块

还可以将自定义模块保存在导入它的文件所在目录以外的目录中。使用Python文件newmodule2.py创建另一个模块。该文件包含一个方法find_sqrt(),如下所示。

newmodule2.py

代码语言:javascript
复制
import numpy as np
def find_sqrt(num):
   return np.sqrt(num)

在不同的目录中保存上面的文件。在我的计算机上是“D:\sample”。

现在,如果要在Python应用程序中导入newmodule2模块,则必须将该模块的路径附加到Python解释器可访问的路径列表中。sys.path列表包含这些路径的列表。

可以使用append()方法将新路径添加到Python解释器可访问的路径列表中。之后,可以导入该模块并访问其函数,如下所示。

mainfile.py

代码语言:javascript
复制
import sys
sys.path.append(r"D:\sample")
import newmodule2
sqrt16 = newmodule2.find_sqrt(16)
print(sqrt16)

从默认Python路径中添加和导入自定义模块

可以通过将该模块保存在Python解释器尝试导入Python模块时搜索的默认路径,将自定义模块导入到Python应用程序中。

要查看这些路径的列表,可以遍历“sys.path()”列表,如下脚本所示:

代码语言:javascript
复制
import sys
for i in sys.path:
    print(i)

图2

注意:根据Python安装和系统名称的不同,输出会有所不同。

可以在sys.path列表中存在的任何路径中添加自定义模块。许多人喜欢将自定义模块存储在包含site-packages的目录中。在上面的输出中,这个目录是“C:\Users\XXX\AppData\Local\Programes\Python\Python310\lib\site-packages”。

创建另一个名为newmodule3.py的模块,将其存储在site-packages文件夹中。newmodule3如下所示:

newmodule3

代码语言:javascript
复制
def find_product(num1, num2):
   return num1 * num2

下面的脚本导入newmodule3模块,并从该模块中执行find_product()函数。

mainfile.py

代码语言:javascript
复制
import newmodule3
prod85 =newmodule3.find_product(8,5)
print(prod85)

最后,可以从Python应用程序的不同位置导入多个自定义模块。例如,下面的脚本导入在本文中创建的newmodule、newmodule2和newmodule3模块。

mainfile.py

代码语言:javascript
复制
import newmodule, newmodule2,newmodule3
log16 = newmodule.find_log(16)
print(log16)
sqrt16 = newmodule.find_sqrt(16)
print(sqrt16)
prod85 =newmodule3.find_product(8,5)
print(prod85)

将经常使用的函数存储在它们自己的自定义模块中是一种很好的做法,这样就不必在每次编写新的Python脚本时都重新构建它们。这可以使代码保持条理化、简洁化,并便于外部用户理解。

注:本文学习整理自wellsr.com,供有兴趣的朋友参考。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档