python开发基础——day14 模块与包
一、上节回顾
迭代器--把一个有很多数据的容器整理好,把里面的数据一个个取出来使用
生成器--自定义的迭代器,主要作用是用来制定规则,生成数据
文件操作--用python代码来读/写电脑里的文件
1.打开文件
2.操作文件
3.关闭文件
操作模式:
w:写入文件 -- 如果源文件有数据 会覆盖
a:追加文件 -- 如果源文件有数据 不会覆盖而是追加
r:读取文件
with open:会根据代码上下文 在文件操作结束后自动的关闭文件
with open('文件路径/文件名.后缀','操作模式',encoding='utf-8') as f:
f.write('写入数据')
f.read() #读取数据
二、初识模块
什么是模块:
模块本质就是一个python文件(.py文件)
当python文件作为一个模块的时候,文件名就是模块名
demo.py(模块)--demo(模块名)
使用模块的作用:
可以通过导入模块的方式,直接调用它模块里的代码,功能,可以更灵活的实现很实用,添加各种效果
变量=存储一个/多个数据
函数=存储多段代码
模块=所有东西都可以进行存放(变量,函数),本质就是一个python文件
当我们导入了一个模块后,就可以使用这个模块里的所有代码:里面的变量和函数
2.1模块分类
2.1.1内置模块(标准库)
python自带的 不需要下载 直接使用
import time #时间模块
import random #随机数模块
import os #系统模块
2.1.2第三方模块
不是python自带的,而是其他开发者写好上传的,使用之前需要下载再导入使用
pygame-->游戏开发
requests-->爬虫
pywin32-->windows编程
pip-->python自带的下载器
python默认下载库就是使用pip,如果python环境没配置好,pip就使用不了-->重装
#如何下载第三方模块
在cmd中输入下面代码
pip install 第三方模块名
#升级pip,有时候pip的版本太低 新的库下载不了 直接复制以下代码
(注意:不要动不动就更新pip 有时候过新的pip也是无法下载 所以如果能下载成功的话 就不要更新pip)
python -m pip install --upgrade pip -i https://pypi.doubanio.com/simple
#如果下载会超时的话导致下载不成功的话 直接复制以下代码
pip install 你要下载的模块名 --default-timeout=100 -i 镜像代理地址
pip install 你要下载的模块名 --default-timeout=100 -i https://pypi.tuna.tsinghua.edu.cn/simple
因为模块基本都事部署在国外,国内下载访问比较慢
就可以通过镜像代理地址(换源),目的是加速下载第三方模块
阿里云:https://mirrors. aliyun.com/pypi/simple/
中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
豆瓣镜像地址:https://pypi.douban.com/simple/
#通过镜像代理地址,下载第三方模块
pip install 第三方模块名 -i 镜像代理地址
pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple/
在cmd中使用 pip list 命令来检查已经安装好的第三方模块
卸载模块:
在cmd中输入下面代码
pip uninstall 模块名
pip uninstall pygame
2.1.3自定义模块
开发者自己定义自己写的模块
如果想要把一个python文件作为一个模块进行使用的话,尽量遵守命名规则
模块名规范(参考变量命名的规范):
1.见名知意
2.纯小写+下划线
3.一定不要用中文命名(特殊符号,纯数字等等),在导入模块的时候,就很容易出错
2.2使用模块
模块使用流程:
1.导入模块
2.调用/使用模块
模块的使用顺序:
1.导入模块中单个功能
2.调用模块中的内容
3.优先自己的功能
4.调用模块里面的
导入模块:
import 模块名
import requests
import demo
import time
import 导入
使用模块:
1.导入整个模块的内容
import 模块名
print(模块名.变量名) #调用模块里的变量
模块名.函数名() #调用模块里的函数
import demo #导入demo整个模块的内容
print(demo.name) #调用了demo里的name变量
demo.fun() #调用了demo里的fun函数
print(demo.talk())
2.导入模块的单个函数或者变量
from 模块名 import 变量名
from 模块名 import 函数名
from demo import name #导入模块的单个函数或者变量
from demo import fun
print(name) #直接输出变量,不用带模块名
fun()
优点:避免不必要的内存资源开销,减少代码量
缺点:可能会出现同名覆盖的情况(容易出现名字混淆)
如果模块名过长或不好记,通过as关键字,可以给它取个别名
import 模块名 as 别名
import user_register as register #以后在这个模块里,这个模块名就叫做register
2.3模块进阶使用
python导入模块的时候,解释器会把模块中的内容先读取一遍
1.读取模块中的全部内容
2.会生成对应的名称空间,这个名称空间的名字跟模块名一致(会把模块中的变量,函数存进去)
3.等待程序的调用-->模块名.变量名/函数名
python中的__name__属性
1.如果当前文件作为一个执行程序来操作的话,那么__name__的返回值为__main__
2.如果当前文件作为一个模块来操作的话,那么__name__的返回值为模块名
在pycharm中,输入main按下tab键会补全
if __name__ == '__main__':
代码 #这里面的代码,当文件作为一个执行程序的时候,才会执行
例子:有些人就只会窝里横,在家里老子就是天,在外面就畏畏缩缩
当返回值为__main__,表示在自己家里,老子想怎么样就怎么样(想输出就输出,想执行底下的代码就执行)
当返回值为模块名,表示在外面,畏畏缩缩,什么也不敢干
python通过main判断可以获取程序的状态:
1.基于这个特性,可以把一些非必要执行的代码,放到main判断中,只有文件是以程序身份执行时,才会运行main判断下的代码
2.python的main和其他语言的main不一样,不是作为程序的入口
3.一个python文件,如果它的__name__为__main__,那他就是执行程序,否则它是一个模块
导入规范:
不推荐一行导入多个模块(太长,不方便查看)
import time,random,os,demo
推荐分多行导入:
import time
import random
import os
导入顺序:
1.最先导入内置模块
2.然后导入第三方模块
3.最后导入自定义模块
import time
import random
import os
import requests
import pygame
import demo
无论是你自己还是别人 看的比较清晰
三、包
模块=文件
包=文件夹
包的概念:
包就是一个特殊的文件夹,管理模块使用,把一些功能相同的模块放在一起,方便我们的维护与管理
包的创建方式:
在pycharm中--右键项目文件夹--new--python package
创建好包之后,会自动生成一个名为__init__的文件,这个文件就是一个负责管理包的模块 init-->初始化
__init__在导入包的时候会自动执行里面的内容
在__init__文件中可以写入包中模块的使用说明/配置信息
包的导入使用:
1.导入包中模块的全部内容
from 包名 import 模块名
print(模块名.变量名)
模块名.函数名()
from login import qq #导入包中模块的全部内容
print(qq.age)
qq.fun()
print(qq.talk())
2.导入包中模块的单个功能
from 包名.模块名 import 变量名/函数名
from login.qq import user_name #导入包中模块的单个功能
from login.qq import fun
print(user_name)
fun()
原文地址:https://blog.csdn.net/qq_45727950/article/details/140374669
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!