如何将你的Python函数存储到模块中

476 阅读6分钟

如何将你的Python函数存储到模块中

在Python中,你可以将函数的定义保存在一个叫做模块的文件中。可以将模块的定义导入到你的程序文件中。

我们可以把我们的Python函数保存在它们自己的文件中,这就是一个模块,然后把模块导入到主程序中。

为了让模块在当前程序中可用,使用导入语句将其转移到运行的程序中。

当使用单独的文件来存储函数时,程序的代码细节就会被隐藏起来,程序代码的逻辑水平也会更高。

将你的函数存储在不同的文件中具有以下优点。

  1. 这些函数可以在其他不同的程序中重复使用。
  2. 分享存储函数的文件比较容易,而不必分享整个程序。
  3. 通过导入函数,人们能够使用其他程序员编写的函数库。

我们可以通过不同的方式导入这些模块,例如。

  • 导入整个模块。
  • 导入特定的函数。
  • 使用as ,给一个函数一个别名。
  • 使用as 给一个模块一个别名。
  • 导入一个模块中的所有函数。

前提条件

为了继续学习这篇文章,需要对 Python 模块有一个清晰的认识。

导入整个模块

第一步是创建一个模块,这是一个结尾为.py 的文件,包含你想导入到主程序中的程序。

下面是一个带有函数make-bread() 的模块。这就是文件bread.py

def make_bread(height, *garnish);
""" summarrize the bread we are about to make"""
print("\Making a "+ str(height) + "-inch bread with the following garnish :")
for garnish in garnishes;
print("-" + garnish)

我们可以有另一个单独的文件making_breads.py ,其存储目录与bread.py 相似。文件make_breads.py 导入模块并两次调用文件make_bread()

这是文件,making_breads.py

import bread
 
bread.make_bread(11,'basil')
bread.make_bread(14,'garlic flakes', 'oregano', 'rolled oat flakes')

行的命令import bread ,打开并复制文件bread.py 中的程序的所有功能。

从用户那里抽象出的数据是这样发生的:人们不了解在后台发生了什么。

人们只需要知道,在bread.py 中定义的任何函数都可以在文件make_breads.py 中使用。

我们通过输入导入的模块名称和用点分隔的函数名称来调用一个导入模块的函数。

无论是否导入模块,程序的结果都是相似的。

输出结果应该是这样的。

制作一个11英寸的面包,装饰物如下: -basil

制作一个14英寸的面包,装饰物如下: -大蒜片 -牛至 -卷筒燕麦片

导入整个模块的语法。

import module_name
module_name.name_of_function()

模块名称内的所有函数都被导入,没有例外。

导入特定功能

你也可以从一个模块中只导入一个特定的函数。

导入一个特定函数时的语法。

from module_name import name_of_function

通过用逗号分隔函数名称,可以从一个模块中导入各种特定函数。

from module_name import first-function, second_function, third_function

从文件make_bread.py ,我们导入我们正在使用的特定函数,它们是:

from bread import make_bread
make_bread(11,'basil')
make_bread(14,'garlic flakes', 'oregano', 'rolled oat flakes')

注意:当我们使用这种语法调用函数时,我们不使用点符号,因为该函数是在导入声明中明确导入的。在我们需要使用该函数时,我们只用名称来调用它。

当你不需要导入整个模块,而且所有的函数都不会被使用时,这是一个更好的选择。

使用'as'给一个函数一个别名

别名主要用于函数名称太长或函数名称与程序中另一个名称相似的情况。

如果有任何一种情况发生,我们就使用一个别名,这是一个与该函数类似的备用名称。

使用别名的一般语法如下所示。

from module_name import function_name as fn

从函数make_bread() ,我们给出一个别名mb() 。我们使用mb 作为函数名,因为这个关键字将函数重命名为别名。

from bread import make_bread as mb
mb(11,'basil')
mb(14,'garlic flakes', 'oregano', 'rolled oat flakes')

import语句将函数名重命名为别名。在这种情况下,函数make_bread() 被改名为mb()

任何时候我们需要调用函数make_bread() ,我们可以使用别名mb() ,程序仍然会运行函数make_bread()

这个别名避免了与另一个可能在程序中被写成make_bread() 的函数的混淆。

使用'as'给一个模块一个别名

一个模块的别名可以根据模块的名称来给出。为一个模块提供别名可以使调用该模块的函数更加容易。

给一个模块提供别名时的语法。

import name_of_module as nm

我们可以把bread.make_bread() 更准确地称为b.make_bread() ,如下面的例子所示。

import bread as b
b.make_bread(11,'basil')
b.make_bread(14,'garlic flakes', 'oregano', 'rolled oat flakes')

给一个模块加上别名并不改变函数的名称,而是保留它们的原始名称。

使用模块的别名不仅简洁,而且使你能够集中精力在函数的信息名称上,从而将你的注意力从模块的名称上转移开。

这些函数名会告诉你这个函数是做什么的,使你的代码具有可读性,而不是使用模块的全名。

导入一个模块中的所有函数

为了导入一个模块中的所有函数,我们在导入语句中使用星号(*) 。星号给出了一个命令,即所有的函数都应该被复制到程序文件中。

导入一个模块中的所有函数的语法如下。

from name_of_module import *

函数的调用可以不使用点符号。

在我们处理不是你写的大型模块的情况下,使用这种方法是不合适的。

from bread import *
make_bread(11,'basil')
make_bread(14,'garlic flakes', 'oregano', 'rolled oat flakes')

如果几个函数被保存在同一个名字下,代码将不会分别导入这些函数。相反,它将覆盖所有的函数。

由于函数名称与函数中其他现有名称的匹配,可能会导致错误和意外输出。

总结

在上面的教程中,我们已经能够看到导入函数和模块是多么容易和重要。

我们看了一下。

  • 导入整个模块,即整个模块和它的所有属性。
  • 导入一个特定的函数,而这是唯一需要的函数。
  • 使用as 给一个函数起一个别名,也就是给函数起一个更短或更简单的名字,并使用 as 来实现这一改变。
  • 使用as ,给一个模块一个别名,我们用这个别名来简化模块的名称或使其不同。
  • 导入一个模块中的所有函数我们导入了一个模块中的所有函数,无论它们是否被使用,我们都使用星号。

我希望这个教程对你有帮助!