您是否想知道如何编写自己的 Python 自定义模块,类似于 NumPy 或 Pandas 等著名的 Python 库?

在我之前为 ,我们了解了 Python 中的自定义类 Python 函数 的文章 ,您现在掌握了在 Python 中实现自己的自定义模块所需的知识。

如果你还在想为什么你应该在 2021 年学习 Python,请查看 Rebecca 关于这个主题的精彩文章 .

在本文中,我们将探讨什么是 Python 自定义模块,以及如何用 Python 编写模块。让我们开始吧。

Python 中的自定义模块是什么?

模块是一个 Python 程序文件,由可以在其他 Python 程序文件中利用的定义或代码组成。它们是 .py 用 Python 编写的文件。

你可以自己编写 Python 模块。它们可以包含可在其他 Python 程序中使用的函数、类和变量的定义。

为什么要用 Python 编写自定义模块?

用 Python 编写自定义模块有助于将程序的大部分内容分解为更小、更易于管理和组织良好的文件。它还可以提高代码的可重用性,是 (不要 自己原则绝佳 重复 D R Y 应用。

例如,我们不必一遍又一遍地将使用的函数复制并粘贴到不同的程序中,而是可以将它们存储在 Python 自定义模块中并根据需要导入它们。

如何在 Python 中编写自定义模块

让我们通过编写一个名为的模块来运行一个简单的示例 circle_area 。它保存为 circle_area.py 并包含一个计算圆面积的函数:

# circle_area.py
# Define a function
def area_of_circle(r):
    pi = 3.14
    area = pi * (r * r)
    return area

然后,我们打开另一个文件, main.py 在其中运行我们的函数,如下所示:

# main.py
# Import the circle_area module
import circle_area

# Call the function
print("Area of circle = %.6f" % circle_area.area_of_circle(7))

因为我们引用的是模块,所以我们需要通过引用点符号中的模块名称来调用该函数。有关更多信息,请参阅 Kateryna 关于 Python 函数 .

在控制台中 main.py 运行

Area of circle = 153.860000

在上面的例子中,我们导入了整个模块。或者,我们可以只导入程序所需的函数。在本例中,我们只导入方法, area_of_circle() 如下所示:

from circle_area import area_of_circle

我们还可以通过重命名来导入模块:

import circle_area as ca

它可以节省打字时间。缩写通常成为行业中的标准做法;例如,库 NumPy 通常以 np 形式导入。

我们还可以使用星号(*)符号从模块导入所有定义,如下所示:

from circle_area import *

然而,这不是一个好的编程习惯,因为它可能导致重复定义并降低代码的可读性。

我们还可以在模块内定义变量并从主脚本中调用它们。例如,我 circle_area.py 通过添加一个名为的变量更新了上一个模块 coolpy

# circle_area.py
# Define a function
def area_of_circle(r):
    pi = 3.14
    area = pi * (r * r)
    return area

# Define a variable
coolpy = " is cool!"

然后我们从文件中打印它 main.py

# Import the circle_area module
import circle_area

# Call the function
print("Area of circle = %.6f" % circle_area.area_of_circle(7))

# Print the variable
print(circle_area.coolpy)

这给了我们以下输出:

Area of circle = 153.860000
 is cool!

基于 关于如何在 Python 中编写自定义类的 文章 pypok.py ,其中包含 Pokemon 我之前使用的类:

# pypok.py
# Define a class
class Pokemon:
    def __init__(self, power, level, names):
        self.power = power
        self.level = level
        self.names = names

    def __repr__(self):
        return (f'Pokemon({self.power}, '
                f'{self.level}, '
                f'{self.names})')

    def total_damage(self):
        return self.damage(self.power, self.level)

    @staticmethod
    def damage(power, level):
        return (power * level * 2) / 50

现在我们将类添加到 main.py 。为了让脚本无错误地运行,我需要导入我的新 pypok 模块。

# main.py
# Import the circle_area and pypok modules
import circle_area
import pypok

# Call the function
print("Area of circle = %.6f" % circle_area.area_of_circle(7))

# Print the variable
print(circle_area.coolpy)

# Call the class
squirtle = pypok.Pokemon(20, 8, "Squirtle")
print("Squirtle inflicts", squirtle.total_damage(), "points of damage!")

运行我们的 main.py 脚本将返回以下输出:

Area of circle = 153.860000
 is cool!
Squirtle inflicts 6.4 points of damage!

文件命名空间 main.py 内的类的函数和属性

虽然我们可以编写自定义模块来定义函数,但我们也可以编写它们来实现代码。

# circle_area.py
# Define a function
def area_of_circle(r):
    pi = 3.14
    area = pi * (r * r)
    return area

# Call the function inside the module 
print(area_of_circle(7))

我们 main.py 通过删除模块导入行以外的所有内容来更新脚本:

# main.py
# Import the circle_area module
import circle_area

现在,我们可以运行脚本并得到以下输出:

153.86

如您所见,文件中的一行 import main.py 就足以获得输出。虽然这确实有效,但您应该避免使用此类解决方案。导入除了让 Python 知道新对象外,不应该做任何其他事情。毕竟,您不想在需要它们之前执行繁重的计算。

最好让模块尽可能通用,以便可重复使用,避免重复。项目特定的变量应保存在通用文件中,例如 main.py .

用 Python 编写自定义模块!

我希望本文能让您很好地了解如何用 Python 编写模块。请毫不犹豫地使用上面的代码片段编写自己的模块。

另外,我鼓励你反思一下你的编程实践。你经常使用哪些函数或类?将它们存储在 Python 自定义模块中是一种很好的做法,可以节省时间并使你的代码更易读、更易于维护。

如果您正在寻找在线 Python 资源列表,Dorota 会为您 在线资源列表 。最后但并非最不重要的是,如果您想了解更多有关所有这些内容的信息并提高您的 Python 技能,请查看我们的 Python 编程轨迹 。它为您提供了路线图,以帮助您更快地实现目标!

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部