目录
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文件,写入内容:
_name_=input("You Name:")
print(_name_)
再创建一个Name.py文件 ,写入内容:
print("You narcissist!")
然后在__init__.py文件写入如下图:
__all__=["Hello"]
# Hello 代表同文件夹中的Hello.py文件
再然后在模块文件夹上一个目录新建一个Index.py文件
上方文件夹就是模块,再到Index.py文件写入内容:
from Idle_eggs_hurt import *
输出:
from xxx import * 是导入模块所有.py文件但是!我们有两个文件,为什么只导入了一个呢?就是__init__.py文件中的__all__参数的功劳,它可以指定用户导入所有模块时,可以导入那些模块,不可以导入那些模块。这就是__all__参数的用法。
2.__version__参数
也是在__init__.py文件写上参数:
from . import *
__version__="0.1"
然后Index.py文件导入:
import Idle_eggs_hurt
print(Idle_eggs_hurt.__version__)
这其实是一个自定义的参数我们还可以添加一个__author__参数
这样__init__.py文件的基本参数就讲完了,我们在这里讲几个特点知识,当导入这个库时,Python会先读取__init__.py文件的内容及函数。并导入进来,因此__init__.py文件不仅仅是可以用来初始化模块,还可以用来写函数或功能!我们看一个案例吧:
在__init__.py文件写入__version__函数:
from . import *
def __version__():
return "0.1"
用Index.py文件调用 :
import Idle_eggs_hurt
print(Idle_eggs_hurt.__version__())
输出:
可以看到,我在__init__.py写了一个__version__()函数。用来输出版本。
2.导入库
导入库有很多方法,我们可以导入指定模块,或函数,或参数,或全部导入,我将会一一讲解。
这个导入是最基础的导入方法,from来指定要导入的库名,import指定导入参数或函数。我们可以看一个实例:
__name__="PYmili"
def name():
print("My Name is PYmili")
return "MY Name is PYmili"
用Index.py 文件导入:
from Idle_eggs_hurt import Name
print(Name.__name__)
Name.name()
输出:
我们还可以这样写:
from Idle_eggs_hurt.Name import name
name()
这里是from指定Idle_eggs_hurt库中的Name模块,然后导入Name模块中的name函数
这样就简单明了的表达出来了,from xxx import xxx 可以导入库中的任何参数或模块
2.import xxx
import 导入方法也可以导入函数或参数,我们看个实例:
现在模块中有两个文件应该是Hello.py,一个是Name.py
from . import *
import Idle_eggs_hurt.Name as n
print(n.__name__)
输出:
在我们导入模块的时候,模块的名字太长了,要用这个模块简直就是增加麻烦,那该怎么解决呢?用别名 as 来从新定义一个名字,拿上面案例:
import Idle_eggs_hurt.Name as n
print(n.__name__)
这就是一些常用的调用方法了,有补充或纠正可以联系博主哦!
下次将讲解如何打包及上传自己的库。有问题及补充可以加群:706128290