Advertisement

3 创建自己的module模块以及__init__脚本的作用

阅读量:

欢迎来到[@一夜看尽长安花 博客]( "@一夜看尽长安花 博客") ,您的** 点赞** 和收藏 是我持续发文的动力

对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426@qq.com 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

专栏:

文章概述:阐述创建独立module及其初始化文件的作用

本文目录

Python之__init__.py

导入othermodule文件夹下的所有脚本:

可以进一步改进__init__脚本

创建子模块

Python之__init__.py

在同一个包下创建一个functionality模块

复制代码
 def add(x, y):

    
     return x+y
    
  
    
  
    
 def sub(x, y):
    
     return x-y
    
  
    
  
    
 def mul(x, y):
    
     return x*y
    
  
    
  
    
 def div(x, y):
    
     return x/y

让我们在另一个包othermodule中创建一个second.py脚本文件

复制代码
 def myfunction():

    
     print("Hello")

让我们在othermodule中再创建一个third.py脚本文件

复制代码
 def another_function():

    
     print("ABC")

切换到main.py,这里我们试图导入othermodule文件夹下的所有脚本

旨在模仿同一包中各个模块使用的相关函数以引入不同包下的所有模块

导入othermodule文件夹下的所有脚本:

复制代码
 from functionality import *

    
 from othermodule import *
    
  
    
  
    
 print(add(10, 20))
    
 print(sub(10, 20))
    
 second.myfunction()

这里就会报错 了,这就是为什么需要__init__.py

在othermodule文件夹中设置一个名为__init__.py的Python文件。完成之后,在该文件夹下就可以实现成为一个可导入的Python模块的目标。

复制代码
    __all__ = ["second", "third"]

写上这一行的话,我们之前的导入代码就生效了,

原理是由于在主脚本中使用了特殊的魔法方法__init__调用了该__init__.py文件的操作,在此过程中实现了对所有导入模块名称的检测

复制代码
 from functionality import *

    
 from othermodule import *
    
  
    
  
    
 print(add(10, 20))
    
 print(sub(10, 20))
    
 #调用方法
    
 second.myfunction()

logo也有变化!

----->

中间多出来了一个圆圈

如果我们像直接使用方法名调用,不想还加上模块名

可以进一步改进__init__脚本

格式如下: from .模块名 import 函数名

这个‘’.‘’表示当前文件夹下

复制代码
 __all__ = ["second", "third"]

    
  
    
 from .second import myfunction
    
 from .third import another_function

然后我们还需要做一个导入操作

格式如下:from 包名 import 函数名

复制代码
  
    
 from othermodule import myfunction
    
 from othermodule import another_function

这样就可以直接使用函数啦!

复制代码
 from functionality import *

    
  
    
 from othermodule import myfunction
    
 from othermodule import another_function
    
  
    
 print(add(10, 20))
    
  
    
 myfunction()
    
  
    
 another_function()

创建子模块

我们可以在一个包中建立子包,并在此示例中选择其他目录下的子目录来构建一个新的submodule文件夹;随后在该子包内编写并保存一个名为fourth.py的脚本

复制代码
 def last_fct():

    
   print("fourth")

切换到main.py

复制代码
 from functionality import *

    
 #两种调用方法
    
 from othermodule.submodule import fourth
    
 from othermodule.submodule.fourth import last_fct
    
  
    
  
    
 print(add(10, 20))
    
 print(sub(10, 20))
    
 fourth.last_fct()
    
 last_fct()

还有一个就是在__init__.py脚本中还可以写导入

复制代码
 __all__ = ["second", "third"]

    
  
    
  
    
 from .second import myfunction
    
 from .third import another_function
    
 from .submodule.fourth import last_fct

再导入一下

复制代码
    from othermodule import last_fct

这样也可以直接使用last_fct() 函数啦!

到此为止,我们就可以开发自己的模块了!

全部评论 (0)

还没有任何评论哟~