一 模块的简介
模块:
- 拿来就用
- 节省开发时间
- 提升效率
- 结构化, 便于查找 ,便于修改,便于维护
- 模块分类: 内置模块,第三方模块(pypi第三方模块平台),自定义模块
二 自定义模块
一个py文件就是一个模块 模块名是不需要加后缀名的
2.1 import 导入
为了防止重复导入,python优化,第一次导入后会把模块名加载到内存,后续的import语句仅是对已经加载到内存中的模块对象增加了一次引用,不会重新执行模块内的语句
导入发生的事情:
- 在当前的名称空间中开辟一个新的空间
- 将模块中的所有代码执行
- 通过模块名进行查找函数(工具)
每个模块都是一个独立的名称空间
起别名:
import text as t
t.func()
做兼容性
choose = input(msg)
if choose == '1':
import meet as t
elif choose == '2':
import text as t
t.func()
导入多个模块
import os,sys,json #可以这样写单不推荐
# 推荐分开写:
import os
import sys
import json
2.2 from ... import ...
from text import func
func()
1. import 和 from的区别
import:
优点:不会和当前文件定义的变量或者函数发生冲突
缺点:占用内存比较大
from:
优点:占用内存比较小
缺点:会和当前文件定义的变量或函数发生冲突
解决办法:起别名
from test import name as n
2.3 一行导入多个
from test import name,func,foo
2.4 from ... import *
把文件中所有的不是以下划线开头的名字都导入到当前位置
可能会覆盖之前定义的名字,可读性差
# 在被导入的模块顶部写
__all__['name','func()'] # 你想导入的
# 只针对 *
2.5 py文件的两种功能
脚本: 在终端中执行
模块: 不使用或者导入
if __name__ == '__main__': #测试接口
func()
# 在当前模块中使用__name__就是'__main__'
# 当模块被导入的时候__name__就是被导入的模块名
2.6 导入路径
相对路径: form day15.t1 import text
从day15文件夹的t1文件夹中导入text模块
绝对路径:
from sys import path
path.insert(0,'D:\') # 把绝对路径加到环境变量中
2.7 模块的查找顺序
内存中已经加载的模块->内置模块->sys.path路径中包含的模块
自定义的模块名不应该与系统内置模块重名