模块
要使整个人生都过得舒适、愉快,这是不可能的,因为人类必须具备一种能应付逆境的态度。——卢梭
代码复用性
模块允许你合理组织代码来实现最优共享
发布工具允许你向全世界共享你的模块
模块(外置模块)
Python 大部分的模块(类库) 都放到了 pypi 上面 需要什么直接搜索.网址https://pypi.org/
函数转换为模块
模块解释一个包含 Python 代码的文本文件,对模块的主要需求就是文件名必须以.py 结尾,他要你把函数转换一个模块,需要把代码保存到一个适当命名的文件中
拿上单元的递归函数举例子,我们可以把这个函数单独放到一个 py 文件里,取名 util.py
'''
作者:雾烟云
时间:2020年
功能:打印出数组里面每一个数组,要是没有就打印出第一个值
'''
def printresult(arr2):
count = 0
for index, item in enumerate(arr2, 0):
if type(item) is list:
print(item)
printresult(item)
else:
count += 1
if count == len(arr2):
print(arr2[0])
print("一切都结束了")
注释
- 单行注释
# 这就是单行注释
- 多行注释就是 ‘’’
'''
这就是多行注释
'''
发布
建立模块
- 为这个模块创建一个文件夹,起名字 nester 文件夹(名字可以随便设置),然后把模块文件(刚才写好的)放到文件夹下
def printresult(arr2):
count = 0
for index, item in enumerate(arr2, 0):
if type(item) is list:
print(item)
printresult(item)
else:
count += 1
if count == len(arr2):
print(arr2[0])
print("一切都结束了")
- 在新文件夹中创建一个 setup.py 的文件,增加如下代码
from distutils.core import setup
setup(
name='CheckOutArr', # 名称
version='1.0.0', # 版本号
py_modules=['nester'], # 那个模块python文件的名称
author='YJ', # 作者姓名
author_email='2993222085@qq.com', # 作者邮箱
url='https://jsopy.gitee.io/', # 作者网址
description='这就是利用递归找出元素' # 描述
)
- 然后在这个文件夹下 打开终端端口,键入一个命令
python setup.py sdist
这样 执行完毕以后 他会在文件夹下面看到 dist 文件夹,setup.py,模块文件.py,还有一个 manifest
安装类库
- 我们进入这个文件夹 执行 python setup.py install 命令安装
python setup.py install
这样在本地安装好了。
总结
安装前
nester 文件夹下面只有两个文件,一个是 nester.py 另外那个是 setup.py
安装后
nester 文件夹下面有两个文件夹
build 下面有个文件夹 lib 里面就是模块文件的源代码
dist 里面有文件 就是发布包
模块文件源代码
xxx.pyc(可能有)编译版本的代码
setup.py (配置文件)
MANIFST 发布的文件列表
导入模块并使用
- 导入模块使用,利用 import 语句
import 包名称(要是包的名称和模块起始文件不对应,那就写模块起始文件文件名)
或者直接写引入方法可以
from 包名称 import 包的方法名
- 使用
# 调用模块封装好的方法
import index2
# 也可以 from index2 import printresult
# 调用的时候就是 printresult(arr2)
arr2 = ['这个杀手不太冷', 1978, '唐人街探案', 1983, [
'囧妈', ['杀死比尔', '蓝色生死恋', ["终结者", '复仇者联盟']]]]
index2.printresult(arr2)
# 结果
'''
['囧妈', ['杀死比尔', '蓝色生死恋', ['终结者', '复仇者联盟']]]
['杀死比尔', '蓝色生死恋', ['终结者', '复仇者联盟']]
['终结者', '复仇者联盟']
终结者
一切都结束了
'''
发布到 PYPI 网站
去 pypi 上面注册账号
上传代码
- 还是在刚才那个包文件目录下 打开终端输入命令:
python setup.py register
- 依据提示输入
1
Username: xxxx
Password: xxxxxxx
- 上传
setup.py sdist upload
不同路径怎么引入模块
- 模块引入不是同级别的目录
比如要引入的文件位置在 son 文件夹那必须要在 son 文件夹下面新建一个文件,
名字叫 __init__.py,空文件即可
主模块就是 PyBasic2 里面有个方法叫 daoru
import son.PyBasic2
son.PyBasic2.daoru(["第一个", "第二个", "第三个"])
# 结果
# 第一个
# 第二个
# 第三个
Python 提供的内置模块
Python 提供了很多内置模块比如 os sys random ,math 等等
- 这里拿 random 举例子
import random
random.randint(1,10) # 产生一个1到10的整数型随机数
random.random() # 产生一个0到1之间的随机数
random.uniform(1.1,5.4) # 产生一个1.1到5,4之间的随机浮点数
random.choice('tommrow') # 从序列中随机选取一个元素
random.randrange(1,10,2) # 产生一个1到10 间隔为2的随机整数
import random
items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
random.shuffle(items) # 将items的顺序随机顺序打乱
print(items)