[解释] 如何在Python中创建自定义模块

python通常被称为“自带电池”的编程语言。这是因为python的哲学是包含各种内置模块和包,从而提供了一个全面的标准库来执行各种任务。

python模块是包含python语句和定义(如变量、函数、类或方法)的文件。通常,它具有.py扩展名,文件的名称也是模块的名称。

python模块

python模块通常包含执行特定任务的代码。另一方面,包只是python模块的集合。

python模块支持python中的模块化编程,可以将大型项目和任务分解为较小的可管理的部分或模块,以后可以将它们组合在一起创建更大的应用程序。尽管python带有许多内置模块,用户也可以创建自己的模块。

常用模块的一个示例是math模块,它提供对数学函数的访问,如factorial()、ceil()、floor()、sqrt()和pow()等。

如果您想计算数字的幂或平方根,您无需自己编写逻辑来执行。您只需导入包含具有该功能的代码的python模块。在这种情况下,您需要math模块。导入模块后,可以按照下面的示例访问所需的函数:

import math

print("使用math模块执行数学计算")
print(math.pow(3, 2))
print(math.sqrt(100))

输出:

使用math模块执行数学计算
9.0
10.0

python模块在代码组织和代码可重用性方面非常有用。python模块允许您将相关的代码逻辑上组织和分组在一起,这使得您的代码更易于理解和使用。

模块还使得在管理和维护代码方面更加容易,特别是在具有数千行代码的大型python项目中。您可以通过将代码分组到各个具有自己功能的模块中轻松管理代码库。

python模块的另一个关键特性是它们允许代码的可重用性。例如,如果您在使用数学函数的python项目上工作,您无需在每个项目中重写函数的实现。

您只需将所需的所有数学函数存储在一个模块中,然后在需要使用这些函数的任何地方导入模块。这本质上就是上面示例中使用的math模块所做的。

python中的自定义模块

python中的自定义模块是用户自己创建的模块。与内置模块(如math、numpy和pandas)不同,它们是与python一起提供的,自定义模块是由用户创建的,通常用于执行特定的功能或解决他们正在工作的项目中的需求。

创建自己的自定义模块可以让您编写可重用的代码,易于阅读和理解。它还可以通过将大型python项目分解为较小的模块,每个模块执行自己的功能,更容易组织和维护python项目,即使对于没有参与项目的开发人员也是如此。

在团队中工作时,自定义模块也非常方便,因为开发人员可以同时处理不同的模块,然后将它们合并成一个大项目。

这实际上允许开发人员在项目中各自处理不同的功能,从而缩短交付时间。自定义模块还使在不同项目之间共享代码更加容易。

通过自定义模块对项目进行模块化开发,还可以通过添加新模块来扩展项目的功能并添加新功能,从而轻松扩展项目。使用模块进行测试和调试也更加容易,因为可以对不同的模块进行独立测试,这样做起来更加简单和快速,调试也不会那么繁琐。

自定义模块还允许您在代码中抽象不同功能的实现细节。这样,您只需向程序的其余部分公开接口即可。

即使在内置模块中,您也可以使用函数(例如math.pow())而无需了解函数的实际实现方式。

考虑到自定义模块的益处,了解如何创建自己的自定义模块至关重要。让我们看看如何在python中创建自己的自定义模块。

准备条件

要开始创建自己的python模块,首先确保在计算机上安装了python,并且具有一个文本编辑器或集成开发环境(ide),您可以在其中编写代码。

还需要您了解基本的python概念,例如如何使用变量、不同的数据类型、函数、类和控制结构。此外,您还应熟悉python的命名约定。

创建自定义的python模块

为了学习如何在python中创建自定义模块,让我们创建一个用于处理一周中的日期的模块。该模块应该允许我们获取一个随机的星期几,获取一周中的所有日期,检查一个日期是否是周末还是工作日,并确认一个字符串是否是有效的星期几。要创建此模块:

1. 创建一个新的项目文件夹,并在文件夹内创建一个名为daysoftheweek.py的文件

2. 在代码编辑器中打开文件,并粘贴以下代码:

import random
days = ['monday', 'tuesday', 'wednesday', 'thursday','friday', 'saturday', 'sunday']

# 获取随机的星期几
def random_day():
  random_index = random.randint(0, len(days)-1)
  return days[random_index]

# 获取一周中的所有日期
def all_days():
  return days

# 检查一个日期是否是周末还是工作日
def is_weekend(day):
  lowercase_day = day.lower()
  if(lowercase_day == 'saturday' or lowercase_day == 'sunday'):
    return true
  return false

# 检查一个字符串是否是有效的星期几
def is_day_valid(day):
  lowercase_day = day.lower()
  if lowercase_day in days:
    return true
  return false

上面的代码创建了一个自定义模块,其中包含四个函数,分别是:random_day()用于获取随机一天,all_days()用于获取一周的所有天数,is_weekend()用于检查一周中的一天是否为周末或非周末,以及is_day_valid()用于确认一个字符串是否为有效的一周天数。一旦我们创建了这个模块,下一步就是使用它。

3. 在同一个文件夹中,创建另一个名为main.py的文件并在编辑器中打开它。main.py是我们将要使用之前创建的模块的地方

4. 要开始使用我们刚刚创建的daysoftheweek.py模块,在main.py文件中,添加以下行

import daysoftheweek

这行代码将daysoftheweek模块导入到我们的主python文件中,使我们能够使用daysoftheweek自定义模块中描述的所有函数。我们整个daysoftheweek模块将被加载并在我们正在工作的文件中可用。

5. 为了测试模块是否工作,让我们生成一个随机的一周天数,然后检查它是否为周末。为了做到这一点,在你的main.py文件中输入下面的代码,然后运行该文件。你可以多次运行它以获得不同的输出。

import daysoftheweek

# 获取随机一周天数
rand_day = daysoftheweek.random_day()

# 检查随机一周天数是周末还是非周末
is_weekend = daysoftheweek.is_weekend(rand_day)

print("随机一周天数生成: " + rand_day)
print("它是周末吗?:" + str(is_weekend))

输出:

随机一周天数生成: 星期日
它是周末吗?:true

6. 我们可以不将整个自定义模块导入到我们正在工作的文件中,而是只导入我们需要的函数。为了做到这一点,我们使用以下导入语法:

from  import 

在我们的例子中,为了只导入is_day_valid()函数,我们使用以下行:

from daysoftheweek import is_day_valid

使用这种语法,我们只导入我们自定义模块中的is_day_valid()函数。我们没有明确导入的自定义模块中的所有其他函数将对我们不可用。你可以使用以下代码测试is_day_valid()函数:

from daysoftheweek import is_day_valid

day = '星期五'
greeting = "你好"

print(day + "是一个有效的一周天数吗?")
print(is_day_valid(day))

print(day + "是一个有效的一周天数吗?")
print(is_day_valid(greeting))

输出:

星期五是一个有效的一周天数吗?
true
你好是一个有效的一周天数吗?
false

7. 我们还可以使用别名导入我们的自定义模块。也就是说,给我们的模块起一个别名,我们可以用这个别名来访问该模块。为了做到这一点,我们使用as关键字,如下所示:

import daysoftheweek as week

一旦我们使用别名导入了模块,我们就可以使用别名,即week,在模块中访问函数和变量。下面是一个例子:

import daysoftheweek as week

days_of_week = week.all_days()

# 循环遍历每天并将它们打印成大写字母
for day in days_of_week:
    print(day.upper())

输出:

星期一
星期二
星期三
星期四
星期五
星期六
星期日

结论

模块是程序员工具箱中非常有用的工具。模块允许您组织代码并编写可读性强、可重用性强、易于管理和维护的代码。如果您发现自己需要重新编写python项目中各种功能的实现,您应该考虑创建自定义模块。

当您希望将一个大任务或程序分解为更小的可管理的子任务时,这也应该是一个选择。祝你编程愉快!

您还可以了解每个开发人员应该了解的python库和模块。

类似文章