day22 模块最后的补充。包。

时间:2021-12-26 22:24:30

 

前一天内容复习:

day22 模块最后的补充。包。day22 模块最后的补充。包。
# def func():
#
a
#
#
def main():
#
func()
#
#
try:
#
main()
#
except:
#
pass

# raise NameError
#
try:
#
raise TypeError('类型错误')
#
except TypeError as e:
#
print(e)

# class EvaException(BaseException):
#
def __init__(self,msg):
#
self.msg=msg
#
def __str__(self):
#
return self.msg
#
#
raise EvaException('类型错误')

# assert 1==2 #if 1==2:
#
一个程序的执行 必须满足某些条件 不满足 完全不能执行了
#
if 1==2:
#
print('*'*123)

#try except
#
finally
View Code

 

今天内容概要:模块内容的最后补充。包。

 

 

模块:

day22 模块最后的补充。包。day22 模块最后的补充。包。
#什么是模块? python代码的文件
#
1.py文件 *****
#
2.包 ***
#
3.内置的模块

# import re
#
re.findall()
#
def findall():
#
pass

#代码的可读性差,且重复的代码多,写代码困难大
#
将一些复杂的需要重复使用的功能进行归类,分别放到同一个py文件中。
#
需要调用的时候直接拿来用就可以了。

# import xiaomei
#
一、导入模块时做的事
#
1.看看自己的内存里有没有
#有就不干活,没有再倒进来
#
2.创建一个命名空间,在这个命名空间中执行代码
#
3.创建了一个xiaomei这个名字,给命名空间中变量和xiaomei绑定在一起
#
4.import方式导入模块中的内容和自己文件中的内容不会冲突
def drive():pass
# xiaomei.drive() #执行模块里的函数
#
print(xiaomei.price)

#二、import ... as:给模块重命名,重命名之后之前的名字就失效了,新名字可以直接使用
#
import xiaomei as xm #import的名字太长我嫌弃
#
xm.drive()
#
import xiaomei as xm #当import的模块和我文件中的变量重名的时候
#
def xiaomei():
#
print(123)
#
xm.drive()
#
if 是mysql数据库: #当兼容多个模块的相同操作的时候
#
import mysql as db
#
elif 是oracle数据库:
#
import oracle as db
#
db.open
#
db.write

#三、import 多个模块
#
import os,re,time
#
#
os.getcwd()
#
re.findall()
#
time.time()
#
import os
#
import re
#
import time
#
#
import requests
#
#
import xiaomei
#
先导入内置的模块
#
再导入扩展模块 :requests beautifulsoup django selenium paramiko
#
最后导入自定义的模块

# from xiaomei import drive,price
#
from xiaomei import drive as d,price as p
#
from import的用法 会直接将导入的内容放在全局,
#
但是dirve中用到的变量和drive方法是一种绑定关系
#
如果有同名,就会发生覆盖
#
drive()

# import xiaomei
#
from xiaomei import *
#
from xiaomei import drive,price
#
drive()
#
print(price)

#from .. import *
#
*受到__all__的限制,如果不定义__all__就默认引入所有
#
如果定义了,那么列表中有什么,就能引入什么
#
import time,importlib
#
import xiaomei
#
xiaomei.drive()
#
time.sleep(10)
#
importlib.reload(xiaomei)
#
print('price : ',xiaomei.price)

# from xiaomei import price
#
print(price)

import xiaomei
# 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))
View Code

 

包:

day22 模块最后的补充。包。day22 模块最后的补充。包。
#什么是包:一群模块文件的集合+__init__
#
py2 : 必须有__init__
#
py3:不是必须的了

# import os
#
os.makedirs('glance/api')
#
os.makedirs('glance/cmd')
#
os.makedirs('glance/db')
#
l = []
#
l.append(open('glance/__init__.py','w'))
#
l.append(open('glance/api/__init__.py','w'))
#
l.append(open('glance/api/policy.py','w'))
#
l.append(open('glance/api/versions.py','w'))
#
l.append(open('glance/cmd/__init__.py','w'))
#
l.append(open('glance/cmd/manage.py','w'))
#
l.append(open('glance/db/models.py','w'))
#
map(lambda f:f.close() ,l)

# from glance.api import policy,versions
#
policy.get()
#
在包中使用模块,就是一直...直到找到模块,import就行了
View Code

day22 模块最后的补充。包。day22 模块最后的补充。包。day22 模块最后的补充。包。day22 模块最后的补充。包。day22 模块最后的补充。包。day22 模块最后的补充。包。day22 模块最后的补充。包。day22 模块最后的补充。包。day22 模块最后的补充。包。day22 模块最后的补充。包。day22 模块最后的补充。包。