无论您是Python编程专家还是初学者,都必须熟悉import modules命令。但是,作为一个新手,您可能不知道这些模块来自何处。
让我们更深入地了解这些模块的起源,以及如何创建和导入它们以供重用。
使用大多数服务器端语言时的最佳实践之一是模块化代码,使其可重用。因为Python是面向对象的,所以它是使代码重用成为可能的语言之一。
代码模块化包括编写代码来执行块中的不同指令。它用于将任务彼此分开。
当你模块化一个代码时,你给它一个唯一的名字。这个名称是它的标识,意味着下次需要使用该代码块时,只需调用它的名称,而不需要调用整个代码。
这种做法使你的工作更容易和更快地在现实生活中的项目。代码模块化还提高了执行速度,使测试更容易。本质上,它使您的代码更高效和可读。
虽然我们这里的示例不是基于面向对象编程(OOP),但在继续创建模块之前,我们必须对其进行简要的讨论。
您打算重用的代码有时可以作为单独的函数独立存在。但它也可以是类中方法的形式。这时OOP的概念开始发挥作用。
OOP是以类的形式将代码表示为独立的对象。每个对象都有自己的属性和方法。
这些属性是类的特征,而每个方法定义属性的行为。
与编写效率较低的长代码(过程编程中的惯例)不同,您的代码在OOP中变得更高效、更具体。原因是在OOP中函数和数据存储在独立的类中,而不是在过程编程中两者分开。
然后,您创建的每个类都使用一个标识。因此,当您需要一个类中的命名模块时,可以引用该类来调用它。
为了更好地理解,请看一下我们的初学者指南,了解OOP。
接下来,让我们看看如何在另一个Python文件中重用word counter函数。本指南只关注于创建不在对象内部的可重用函数。
首先,打开计算机上任何位置的命令提示符,以启动新项目。在本例中,我们将使用word_ucount的项目名称。要执行此操作,请键入mkdir word_ucount。
接下来,使用首选的虚拟环境工具创建一个新的虚拟环境。如果您已经创建了一个,只需激活它。确保您仍在项目的目录中。
作为一个好的实践,要创建word counter函数,我们首先尝试找出一个计算它的原始公式。一般来说,你可以通过在一个句子的空格数上加一个来计算字数。请注意,虽然您可能不需要字数统计,但这一想法与代码可重用性之间的关系才是本文的重点。
接下来,打开项目位置的文本编辑器并创建一个新的Python文件。在本例中,文件名为文字计数器.py;确保使用正确的.py扩展名。
以下是wordcounter文件的外观:
# create a variable called word that holds some stringsword = ['how to make a word counter in python']# Next, loop through the variable to count the words in the created variableNumberOfWords = [EachWord.count(' ') + 1 for EachWord in word]print(NumberOfWords)output: [8]既然原始代码正常工作,那么我们就通过创建一个使代码可重用的函数来将其模块化:
def CountWords(words):if words is not None:NumberOfWords = [Eachword.count(' ') + 1 for Eachword in words]return NumberOfWordsmywords = ['making a word counter in python']print(CountWords(mywords))output: [6]就这样,我们创建了一个单词计数器模块。让我们看看如何重用它。
请记住,您之前创建了一个名为文字计数器.py. 该文件包含一个名为CountWords的函数。如果需要在新文件中使用该函数,并且不想重写整个代码或函数,则只需将该函数作为模块导入新文件中即可。
注意,在本例中,所有Python文件必须位于同一目录中。要确保是这种情况,只需在具有文字计数器.py文件。
新文件如下所示:
from wordcounter import CountWordswords = ["how to import and reuse your code in Python"]CountWords(words)output: [9]在上面的代码片段中,CountWords是文字计数器.py文件。为了在新的Python文件中重用该函数,我们从其父文件导入它(文字计数器.py).
如果新文件与模块文件不在同一目录下怎么办?在这些情况下,必须使用绝对导入来引用模块。
为了进一步理解这一点,假设您已经在项目目录中创建了一个新文件。但是要从中导入函数的文件(在本例中是wordcounter)位于项目目录中的另一个文件夹中——我们称该文件夹为subword\u count。
要将模块从wordcounter(现在在subword\u count文件夹中)导入到新的Python文件中,您需要绝对调用它。要了解其工作原理,请在项目目录中创建一个新文件,将其命名为首选名称,然后按照下面的代码段所述导入模块:
from subword_count.wordcounter import CountWordswords = ["how to import and reuse your code in Python for files in different folders."]CountWords(words)output: [14]在绝对导入期间,Python浏览父文件夹(在本例中是subword\u count),并定位包含感兴趣函数(CountWords)的文件或模块。
要分解上述绝对导入的含义,subword\u count是项目目录中包含文字计数器.py文件。然后该文件包含CountWords函数。
模块化和重用代码是您正在运行的任何项目的最佳实践。如果编写OOP,这很可能经常执行,那么可以从模块导入类或从类调用函数。如果类在文件夹中,请将其绝对导入到新文件中。
同样的做法也适用于不在对象中的函数。根据项目的布局,您可以显式地或绝对地导入它们,就像我们上面所做的那样。
有没有想过如何在两种编程语言之间发送数据?是否尝试发送一个对象或多个数据段? ...
...您是一名经验丰富的Python开发人员,还是刚刚起步,学习如何设置虚拟环境对于任何Python项目都是必不可少的。和我一起讨论Python虚拟环境的所有知识。 ...
... 在本文中,我将向您展示如何使用Python读写googlesheets。如果您刚刚开始Python之旅,那么以下5个学习Python的最佳网站是一个很好的起点。 ...
在这个快速简单的Raspberry Pi项目中,您将学习如何**Gmail电子邮件通知灯。如果您有任何未读的电子邮件,Python脚本会打开指示灯。这个项目需要很少的部分,可以在一个小时内完成!当然,你可以把你的LED打扮成任何你喜欢的...
... 让我们看看如何在计算机中创建Instapaper或Pocket的克隆,而不会丢失任何网页资源。 ...
...以通过SSH连接到Pi,以避免额外电线的混乱。我们将介绍如何控制LED,无论您选择哪种方法。 ...
需要打印到Python文件吗?今天,我们将了解如何轻松地开始写入文件。我们将介绍创建新文件、附加现有文件和覆盖现有文件。 ...