分享

Python的自定义模块和调用方法...

 大傻子的文渊阁 2022-11-17 发布于浙江

目录

1.创建模块及__init__.py初始化文件

为什么要添加__init__.py文件?

2.__version__参数

2.导入库

 1.from xxx import xxx

Name.py文件写入内容

2.import xxx

__init__.py文件参数

 用Index.py文件导入

3.as别名 


众所周知Python有很多的标准库及第三方库支持的,可以随便使用pip就可以下载出来。也就是,别人把饭菜做好,你想要什么菜自己去打来吃就行了。很多模块也非常强大!当然我们自己也可以定义一个模块或库。本期教程只介绍如何创建模块,后面会教大家如何上传自己制作的第三方库至pypi。实现pip安装


1.创建模块及__init__.py初始化文件

要想调用你的模块文件 ,就得新建一个文件夹,然后再创建一个__init__.py文件如下图所示:

  

提示:__init__.py文件是两个_下划线 


为什么要添加__init__.py文件?

在Python3中要自定义导入一个文件夹里的.py文件。就需要__init__.py文件来告诉解释器,这文件夹是一个模块。如果没有添加,将无法导入这个模块(甚至不是一个模块)就会报错。创建了这个文件后,当导入这个文件夹中的模块时,都会先导入__init__.py中的内容及库。__init__.py文件也可以保持为空,这并不影响导入模块。


1.__all__参数

__all__参数是指定模块导入全部内容时,限制可以全部导入那些库。我们可以看一个实例:

我们首先创建一个Hello.py文件,写入内容:

  1. _name_=input("You Name:")
  2. print(_name_)

再创建一个Name.py文件 ,写入内容:

print("You narcissist!")

然后在__init__.py文件写入如下图: 

  1. __all__=["Hello"]
  2. # Hello 代表同文件夹中的Hello.py文件

 再然后在模块文件夹上一个目录新建一个Index.py文件

上方文件夹就是模块,再到Index.py文件写入内容:

from Idle_eggs_hurt import *

输出:

 from xxx import * 是导入模块所有.py文件但是!我们有两个文件,为什么只导入了一个呢?就是__init__.py文件中的__all__参数的功劳,它可以指定用户导入所有模块时,可以导入那些模块,不可以导入那些模块。这就是__all__参数的用法。


2.__version__参数

也是在__init__.py文件写上参数:

  1. from . import *
  2. __version__="0.1"

然后Index.py文件导入:

  1. import Idle_eggs_hurt
  2. print(Idle_eggs_hurt.__version__)

这其实是一个自定义的参数我们还可以添加一个__author__参数 


这样__init__.py文件的基本参数就讲完了,我们在这里讲几个特点知识,当导入这个库时,Python会先读取__init__.py文件的内容及函数。并导入进来,因此__init__.py文件不仅仅是可以用来初始化模块,还可以用来写函数或功能!我们看一个案例吧:

在__init__.py文件写入__version__函数:

  1. from . import *
  2. def __version__():
  3. return "0.1"

用Index.py文件调用 :

  1. import Idle_eggs_hurt
  2. print(Idle_eggs_hurt.__version__())

输出:

 

可以看到,我在__init__.py写了一个__version__()函数。用来输出版本。 


2.导入库

导入库有很多方法,我们可以导入指定模块,或函数,或参数,或全部导入,我将会一一讲解。

 1.from xxx import xxx

这个导入是最基础的导入方法,from来指定要导入的库名,import指定导入参数或函数。我们可以看一个实例:

Name.py文件写入内容

  1. __name__="PYmili"
  2. def name():
  3. print("My Name is PYmili")
  4. return "MY Name is PYmili"

用Index.py 文件导入:

  1. from Idle_eggs_hurt import Name
  2. print(Name.__name__)
  3. Name.name()

输出:

我们还可以这样写:

  1. from Idle_eggs_hurt.Name import name
  2. name()

 

 这里是from指定Idle_eggs_hurt库中的Name模块,然后导入Name模块中的name函数

这样就简单明了的表达出来了,from xxx import xxx 可以导入库中的任何参数或模块


2.import xxx

import 导入方法也可以导入函数或参数,我们看个实例:

现在模块中有两个文件应该是Hello.py,一个是Name.py

__init__.py文件参数

from . import *

 用Index.py文件导入

  1. import Idle_eggs_hurt.Name as n
  2. print(n.__name__)

输出:


3.as别名 

在我们导入模块的时候,模块的名字太长了,要用这个模块简直就是增加麻烦,那该怎么解决呢?用别名 as 来从新定义一个名字,拿上面案例:

  1. import Idle_eggs_hurt.Name as n
  2. print(n.__name__)

 这就是一些常用的调用方法了,有补充或纠正可以联系博主哦!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多