您是否想知道如何编写自己的 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 编程轨迹 。它为您提供了路线图,以帮助您更快地实现目标!
发表评论 取消回复