目录
模块简介
模块导入的两种方式
方式一: import ...
方式二: from ... import ...
模块简介
1.什么是模块?
模块就是一系列功能的结合体 可以直接使用
2.为什么要用模块?
极大地提升开发效率(拿来主义>>>:站在巨人的肩膀上)
3.模块的三种来源
1.内置的模块
无需下载 解释器自带 直接导入使用即可
2.自定义模块
自己写的代码 封装成模块 自己用或者发布到网上供别人使用
3.第三方模块
别人写的发布到网上的 可以下载使用的模块(很多牛逼的模块都是第三方)
4.模块的四种表现形式(大白话:长啥样子)
1.使用python代码编写的py文件 # 掌握
2.多个py文件组成的文件夹(包) # 掌握
3.已被编译为共享库或DLL的c或C++扩展(了解)
4.使用C编写并链接到python解释器的内置模块(了解)
模块导入的两种方式
方式一: import ...
import time # 别人封装好的模块
import sys # 系统自带
import md # 自定义的py文件
...
研究模块的时候 一定要分清楚谁是执行文件, 谁是被导入文件(模块)
eg:
import md
print(md.name)
md.read()
模块简介.py是执行文件, md.py是被导入文件(模块)
导入模块内部到底发生了什么事
1.执行当前文件 产生一个当前文件的名称空间
2.执行import句式 导入模块文件(即执行模块文件代码产生模块文件的名称空间)
3.在当前文件的名称空间中产生一个模块的名字 指向模块的名称空间
4.通过该名字就可以使用到模块名称空间中的所有数据
ps:相同的模块反复被导入只会执行一次
import md 有效
import md 无效(写了跟没写一样)
import md 无效(写了跟没写一样)
import句式的特点
可以通过import后面的模块名点的方式 使用模块中所有的名字
并且不会与当前名称空间中的名字冲突(指名道姓)
方式二: from ... import ...
导入模块内部到底发生了什么事
1.执行当前文件产生一个名称空间
2.执行导入语句 运行模块文件产生名称空间存放运行过程中的所有名字
3.将import后面的名字直接拿到当前执行文件中
注意的点
1.重复导入也只会导入一次
2.使用模块名称空间中的名字不需要加模块名前缀 直接使用即可
3.但是from...import的句式会产生名字冲突的问题
在使用的时候 一定要避免名字冲突
4.使用from...import的句式 只能使用import后面出现的名字
from...import...可以简单的翻译成中文
从...里面拿...来用 没有提到的都不能用 指名道姓
补充:
1.可以给被导入的模块起别名
2.可以连续导入多个模块或者变量名, 连续导入多个模块, 这个模块最好有相似的功能部分, 如果没有建议分开导入. 如果是同一个模块下的多个变量名则没有关系.
3. 用于导入方法: from md import *
*表示md里面所有的信息,
from ... import 的句式也可以导入所有的信息
如果模块文件中使用了__all__限制可以使用的数据, 那么*就会失效, 依据__all__后面列举的数据