0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python如何import自己的模块

科技绿洲 来源:网络整理 作者:网络整理 2023-11-22 14:57 次阅读

Python中,我们可以通过import语句来引入自己的模块。导入自己的模块可以提高代码的可重用性,使代码更加清晰和易于维护。在本文章中,我们将详细介绍如何导入自己的模块以及一些附加的相关主题。

首先,让我们看一个简单的例子。假设我们有一个名为my_module的模块,它位于当前工作目录的根目录中。

my_module/
__init__.py
module1.py
module2.py

my_module目录下,我们有__init__.py文件和两个模块文件:module1.pymodule2.py

要导入my_module模块,我们可以使用以下语法:

import my_module

这会找到my_module目录,并执行__init__.py文件。在这个文件中,我们可以定义一些初始化操作,例如导入其他的模块或者定义一些全局变量。

# __init__.py

from . import module1
from . import module2

在这个例子中,__init__.py文件导入了module1module2模块。我们使用相对导入(使用.)来引用当前目录下的模块。这样,当我们导入my_module时,它将自动导入module1module2

在使用导入的模块之前,我们需要加上模块名的前缀。例如,我们可以使用以下语法来调用module1中的函数:

my_module.module1.function_name()

如果我们只需要使用模块中的特定函数或变量,我们可以使用以下语法来导入:

from my_module import module1

这允许我们直接使用module1中的函数或变量,而无需使用模块名的前缀。例如:

module1.function_name()

当我们导入一个模块时,Python会在指定的路径上查找模块文件。由于my_module位于当前工作目录的根目录中,我们可以直接导入它。

然而,在实际项目中,我们可能需要导入自定义模块的位置可能会不同。为了确保Python能够找到我们的模块,我们需要将模块的路径添加到系统的sys.path列表中。我们可以通过以下方式来实现:

import sys
sys.path.append('/path/to/my_module')

在上述例子中,我们将/path/to/my_module替换为实际的路径。

另一种更常用的方法是将模块所在的目录添加到环境变量PYTHONPATH中。这样,我们可以直接在终端中使用python命令运行代码,而无需在代码中显式添加路径。

export PYTHONPATH="/path/to/my_module"

这样设置后,我们可以在终端中导入我们的模块。

在实际项目中,模块可能会有多个嵌套的子目录。为了更好地组织和管理代码,我们可以使用包(package)的概念。包是一个包含多个模块的文件夹,其中还可以包含子包。

下面是一个包的示例目录结构:

my_package/
__init__.py
module1.py
module2.py
subpackage1/
__init__.py
module3.py
subpackage2/
__init__.py
module4.py

在这个示例中,my_package是一个包,subpackage1subpackage2是它的子包。所有的.py文件都是模块。

要导入my_package包,我们可以使用以下语法:

import my_package

与之前的例子类似,这将执行my_package目录下的__init__.py文件。在这个文件中,我们可以导入其他的模块,包括子包和子模块。

# __init__.py

from . import module1
from . import module2
from .subpackage1 import module3
from .subpackage2 import module4

在上面的示例中,__init__.py文件导入了module1module2模块,以及subpackage1subpackage2子包下的module3module4模块。

我们可以使用以下语法来调用子模块中的函数:

my_package.subpackage1.module3.function_name()

另一种导入子模块的方法是使用以下语法:

from my_package.subpackage1 import module3

然后,我们可以直接使用module3中的函数:

module3.function_name()

除此之外,我们还可以使用通配符(*)进行导入,这样可以直接导入模块中的所有函数和变量。例如,我们可以使用以下语法:

from my_module import *

但是需要注意的是,这种方式会导入所有的函数和变量,可能存在命名冲突的问题。

另外,当模块名较长或者存在重复时,我们可以使用as关键字来为模块创建别名。这样可以简化导入语句和提高代码可读性。例如:

import my_module as mm

mm.module1.function_name()

在上面的例子中,我们使用as关键字将my_module重命名为mm。因此,我们可以使用mm作为模块的前缀来调用其中的函数。

除了上述内容,还有一些其他的导入技巧和用法。

  • 导入特定的函数或变量:
from my_module import function_name, variable_name

这样只会导入指定的函数或变量,而不是整个模块。

  • 导入模块并为其中的函数或变量创建别名:
from my_module import function_name as fn, variable_name as vn

这样我们可以使用fnvn来调用导入的函数或变量。

  • 使用__all__变量:

在模块的__init__.py文件中,我们可以定义一个__all__变量,它是一个包含导出的函数和变量名的列表。这样,当使用from my_module import *语句导入模块时,只有在__all__列表中的函数和变量才会被导入。例如:

# __init__.py

__all__ = ['function_name', 'variable_name']

这样设置后,只有function_namevariable_name会被导入。

  • 使用if __name__ == "__main__"语句:

在模块中,我们可以使用if __name__ == "__main__"语句来判断是否以脚本的形式执行模块。这对于测试函数的代码和调试代码非常有用。例如:

# module1.py

def function_name():
print("Function executed")

if __name__ == "__main__":
function_name()

这样,在导入模块时,function_name函数不会执行。只有当我们直接运行module1.py文件时,function_name函数才会被执行。

以上是关于如何导入自己的模块的一些详细介绍。希望本文对你有所帮助,为你理解和使用模块提供了一些指导。

总结起来,导入自己的模块是Python中非常重要和常用的功能。它让我们能够更好地组织和管理代码,提高代码的可重用性和可维护性。我们可以使用import语句导入模块,并根据需要使用不同的导入方式,如使用模块名前缀、from语句、as关键字等。此外,我们还可以使用包来组织模块,并使用__init__.py文件对包进行初始化和导入子模块。通过掌握导入模块的方法和技巧,我们可以写出更高效和易于维护的Python代码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2484

    浏览量

    46530
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66767
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466
  • import
    +关注

    关注

    0

    文章

    15

    浏览量

    1904
收藏 人收藏

    评论

    相关推荐

    python模块安装方法

    Python模块呢?import语句自定义模块可以采用import语句来进行引入,其操作步骤是先导入模块
    发表于 04-04 14:57

    什么是python包、模块和库?

    使用 模块名.变量名 的方式访问这个变量。>>> import demo导入成功>>> demo.name'Python编程时光'在导入模块的时候,有一个非常重要
    发表于 03-09 16:48

    python包、模块和库是什么

    有一个名为 demo.py 的文件,文件内容如下 name="Python编程时光"print("导入成功") 直接使用 import 语句就可以导入,导入之后,就可以使用 模块名.变量名 的方式访问
    的头像 发表于 03-09 16:47 2101次阅读

    python模块相对导入from和import介绍1

    无包文件**init**.py下,python通过import module导入模块时,先搜索程序运行主目录。 程序运行主目录为运行的py文件所在目录,而不是执行python.e
    的头像 发表于 02-21 14:15 801次阅读

    python模块相对导入from和import介绍2

    python2.7先搜索当前包目录,再搜索sys.path模块搜索路径。即先相对再绝对。 本示例在交互模式执行,非文件模式执行。
    的头像 发表于 02-21 14:17 513次阅读

    简述python模块import和from及all

    python指定导入目录路径,称为包导入。 通过import和from导入包模块。 通过**all**指定导入的模块和导入的模块
    的头像 发表于 02-21 14:20 962次阅读

    浅析python模块创建和from及import使用

    python模块通过用python程序编写的.py文件即可创建,通过from及import语句导入模块来使用。
    的头像 发表于 02-21 14:44 591次阅读

    import模块的导入方法

    import 加载的模块分为四种类型: 使用python编写的代码 .py 文件 已被编译为共享库或 DLL 的C或C++扩展 一组模块的包 使用C编写并链接到
    的头像 发表于 09-11 17:31 798次阅读

    rom…import导入代码介绍

    rom…import导入 基本语法格式如下: from 模块import 成员1,成员2,… 如果希望导入一个模块中的所有成员,则可以采用如下方式: from
    的头像 发表于 09-11 17:35 677次阅读

    如何实现__import__()动态导入

    python2和python3中有差异,会导致意外错误. 如果需要动态导入可以使用 importlib 模块 import importliba = importlib.
    的头像 发表于 09-11 17:38 751次阅读

    Isort:自动整理import的超实用工具教程

    isort 是一个Python的实用程序/库,它会按字母顺序对导入(import)的库进行排序,并自动分组。它提供多种使用方式,包括命令行、Python调用等。 它基于Python 3
    的头像 发表于 10-21 10:38 308次阅读
    Isort:自动整理<b class='flag-5'>import</b>的超实用工具教程

    Isort:自动整理 import 的超实用工具教程

    isort 是一个Python的实用程序/库,它会按字母顺序对导入(import)的库进行排序,并自动分组。它提供多种使用方式,包括命令行、Python调用等。 它基于Python 3
    的头像 发表于 10-31 15:09 260次阅读
    Isort:自动整理 <b class='flag-5'>import</b> 的超实用工具教程

    Python import Hook 实现远程导入模块

    所谓的模块 导入,是指在一个模块中使用另一个模块的代码的操作,它有利于代码的复用。 也许你看到这个标题,会说我怎么会发这么基础的文章? 与此相反。恰恰我觉得这篇文章的内容可以算是 Python
    的头像 发表于 11-02 11:45 350次阅读
    <b class='flag-5'>Python</b> <b class='flag-5'>import</b> Hook 实现远程导入<b class='flag-5'>模块</b>

    python如何导入模块

    Python是一种强大的编程语言,它支持模块化编程,使得开发者可以将代码分解为可重用且独立的模块模块是一个包含函数、类和变量等定义的文件,我们可以使用
    的头像 发表于 11-22 14:46 532次阅读

    如何用import导入一个包

    Python中,import语句用于导入代码所需的模块或包。模块Python代码的集合,而包是包含
    的头像 发表于 11-22 14:59 429次阅读