自学内容网 自学内容网

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)!