一、
1、
有些时候代码的可读性差,且重复的代码多,写代码困难大
然后我们就将一些复杂的需要重复使用的功能进行归类,分别放到同一个py文件中。
需要调用的时候直接拿来用就可以了。--- 就产生了模块(其实就是py文件)
2、
导入模块
①、是先看自己内存有没有,没有的话再引入。
②、创建一个命名空间,在这个命名空间中执行代码
③、创建了一个xiaomei这个名字,给命名空间中变量和xiaomei绑定在一起
④、import方式导入模块中的内容和自己文件中的内容不会冲突
def drive():pass
xiaomei.drive() #执行模块里的函数
print(xiaomei.price)
注意:依赖倒置原则。(模块之间不能互相调用--单项调用)
3
、
import
...
as
:
给模块重命名,重命名之后之前的名字就失效了,新名字可以直接使用
import xiaomei as xm #import的名字太长我嫌弃
xm.drive() # 得到原xiaomei中的内容
import xiaomei as xm #当import的模块和我文件中的变量重名的时候
def xiaomei():
print(123)
xiaomei() # 得到当前文件的 内容 # 123
3.1应用实例:
if 是mysql数据库: #当兼容多个模块的相同操作的时候
import mysql as db
elif 是oracle数据库:
import oracle as db
db.open
db.write
4
、
import
多个模块
import
os,re,time
# 就这一句话
os.getcwd() / re.findall() / time.time()
# 这样就可以用了
①但最好是如下一个一个引用:
import
os
import
re
import
time
②导入顺序:
先导入内置的模块
再导入扩展模块 :
requests beautifulsoup django selenium paramiko
最后导入自定义的模块
③调用模块中的个别方法:
from
xiaomei
import
drive
as
d,price
as
p
from
import
的用法 会直接将导入的内容放在全局,
但是
dirve
中用到的变量和
drive
方法是一种绑定关系
如果有同名,就会发生覆盖
1、import
xiaomei (比较好)
2、from
xiaomei
import
* # 调用模块中所有方法
# (不太好,因为如果有500个全部引用?)所以就出现了
__all__
xiaomei模块:
price = '三十块钱一位'
def drive():
print('快上车')
print(price)
def login():
print('login ')
如果在文件开始设置__all__ = ['drive'] ,则别的文件用 * 时,只能调用只drive
3、from
xiaomei
import
drive,price (好)
5、
如果在 xiaomei 这个模块中有 print(),则一调用就会打印,为了避免这个,所以就出现了:(下面这个是xiaomei模块的内容)
def login():
print('login ')
if __name__ == '__main__': #
login()
print('小司机') # login\n 小司机
print(repr(__name__)) # '__main__' (所以调用的时候name是xiaomei就进入不了 if 中 所以就不打印。)
6、这个题的意思就是说,(玩,不重要)
①、内置模块在启动程序的时候就已经加载到内存了,再定义一个time模块,并不会怎么样(re模块特殊)
②、例如xiaomei模块在这个程序等的十秒钟里,改变了内容,不会改变!但是加上了( importlib.reload)这个,相当于重新加载一次就会改变!
import time,importlib
import xiaomei
xiaomei.drive()
time.sleep(10)
# importlib.reload(xiaomei)
print('price : ',xiaomei.price)
二、这个不懂!!!
import
re
import
sys
print
(sys.modules)
print
(sys.path)
----------------------------------------------------
执行
python
解释器,已经在内存中加载了一些内置的模块了
导入模块的时候,如果模块不存在在
sys.modules
,才从
sys.path
给的路径中依次去查找
sys.path
完全可以决定某个模块能不能被找到(除了已经在内存中加载的一些内置模块)
------------------------------------
import
xiaomei
当一个
py
文件被当做一个模块导入的时候,会自动生成一个
pyc
文件
pyc
文件是这个代码编译之后的文件,节省了每一次导入代码之后还要编译的时间
--------------------------------------------------------
import
xiaomei
print
(
dir
(xiaomei))
--------------------------------------------------------
import
builtins
print
(
dir
(builtins))
三、包
from
glance.api
import
policy,versions
policy.get()
在包中使用模块,就是一直
...
直到找到模块,
import
就行了