模块与包

模块定义
  • 一个py 文件就是一个模块
  • 三层架构: 总(分析功能,分配功能)-->分(给每个文件分配任务)-->总(将所有功能综合起来)
  • 可以增加程序的健壮性和可读性,
  • 增加开发效率
模块的来源
  • python解释器内置的模块(直接import调用)
  • 自己写的文件
  • 别人写好的成熟模块(先用 pip install,再import)
模块的存在形式
  • 单模块
    • 自己定义的功能所在的py文件
    • 将多个Py文件放到一个文件夹下
    • 必须有__init__.py文件
import语句发生的内部原理
  • 前提是有一个py文件,并且有自己的名称空间
  • 通过import导入模块,将所有源代码执行一变
  • 如果没有调用函数,则不会调用,而是检索到所有函数地址
  • 自动创建一个当前文件的名称空间,与自己的名称空间合并
  • 我们通过模块名.属性名来调用模块中的对象
多模块导入
  • 单独导入
    • import a,b,c,d,...
  • 单独导入
    • import a
    • import b
    • import c
详细导入语法
  • 只想要具体的指定的参数或者方法
    • from a import b
    • 这样导入可以不用模块.b了
    • 直接b领用
  • 导入模块中的所用方法
    • from a import *
对导入的模块/模块中的对象重命名
  • import a as b #把a模块改名为b,调用时如下:
  • b.方法
  • 在模块与原文件对象重复时

循环导入问题

定义:
  • a调用b,b调用a
解决方法
  • 直接将导入模块的语法放到最后
    • 会导致没得用
  • 放到指定的函数内部,只要函数不调用就不会触发导入语句
搜索模块的优先级
  • 查找模块时的查找顺序

    • 模块分类
      • 纯python编写的模块
      • 内置的一系列模块,包括Python解释器自带的和已经用pip install的
      • 使用C语言编写的底层代码
      • C和C++扩展的模块
    • 加载从下往上
    • 查找从上往下
  • 查找顺序

    • 相对路径

      • 不给路径就默认在当前目录
      • ./当前目录
      • ../上层目录
    • 绝对路径

      • sys.path
        

包的定义

  • 模块的集合文件夹,必须包含init方法
包的创建
  • pycharm右键python package,会自动生成init文件
包的使用
  • 直接导入

    • from 包 import 模块
      使用:
      模块.方法()
      
  • 先在init中注册:init就相当于包的目录

  • init注册:
    from .模块 import 方法
    
    使用:
    from 包 import 方法
    方法()
    
    原因:导入包时,多了一步操作就是先在init里匹配方法,找不到然后再挨个模块查找
    
    
    

json模块

json用途:
  • 序列化
    • 将python中的字典、列表等类型转换为字符串
    • 类型强转也可以实现,但是不能转回(不可逆)
  • 反序列化
    • 将python中的字符串转换wield字典、列表等类型
导入
  • import json:
    with open('file.json','w',encoding='utf8') as p:
    	json.dump(user_dict,fp)
    	
    写入内容单引号会自动转换为双引号,然后保存。
    可以实现将字典以字符串格式写入文件,读取时还是字典
    
json文件转为python对象
import json:
with open('file.json','w',encoding='utf8') as p:
	json.load(fp)
	
读取时还是字典
转换:反序列化
  • data_json_str =json.dumps(obj) #把字典转为了字符串
  • data_dict = json.loads(obj) #把字符串转为了字典
json保存数据时的特点
  • 中文内容会自动保存为二进制
  • 解决方法:ensure_ascii = False 就可以在写入时不被写成asscii码
posted @ 2024-04-18 12:30  zenopan  阅读(5)  评论(0编辑  收藏  举报