1.模块的使用
2.为什么要使用模块
1.从文件级别组织程序,更方便管理
2.引用别人写的,提升效率
3.如何实用模块 import spam
第一次导入模块发生几件事:
1.产生一个新的名称空间
2.运行原文件代码产生的名字都存放在1的名称空间中
运行过程中gloabl关键字指向改名称空间
当前文件的名称空间sapm 名称空间指向了spam.py运行文件的名称空间
def read1():
print(money)
import spam
import spam #重复导入时重复引用不是重新加载,不会重复加载
money=1
spam.money #原来属性的不会冲突
#引用的源文件的属性
spam.read1
强调:宝导入的模块在执行的过程中使用自己的独立的名称空间.
2.起别名
import spam as sm
print(sm.money)
3.一行导入多个模块
import time,sys,spam
4.如何使用模块
from 模块 import 名字
直接用名字
优点:引用方便
缺点:容易和当前名称空间产生冲突
from span import money as m
from span import money.read1
from span import * #名字全部倒入
#* 容易冲突
#_money 下划线开始的名字* 无法导入
5.python 文件的两种用途
1.直接运行,当做脚本执行
2.当做模块被导入使用
__name__的值在引用的时候就是文件名spam
__name__ 在本地引用的时候就是__main__
6.模块的搜索路径
1. 内存 ---> 内置模块 ---> 自己定义的模块在sys.path
查找先在内存里面查找
['D:\\PycharmProjects\\wadsd\\day5', 'D:\\PycharmProjects\\wadsd',
执行文件所在的文件夹
'D:\\Python36\\python36.zip', 'D:\\Python36\\DLLs',
zip相当于文件夹
'D:\\Python36\\lib', 'D:\\Python36', 'D:\\Python36\\lib\\site-packages']
print(sys) # 内置模块C语言写的
<module 'sys' (built-in)>
sys.path.append(r'D:\PycharmProjects\wadsd\day5\02_包\包的使用.py')
sys.path路径加上就可以找到包
或者放入同一路径
import spam,time
time,sleep(10)
import span
二 包
包就是文件夹,组织起来调用
包就是包含了__init__.py的文件夹
可以往改文件夹下放一堆子模块.
导入调用
py3的时候包下面没有init.py文件也不会报错.py2不行
包的使用导入时
但凡是在导入时出现点,这是导入包才有的语法
点的左边必须是一个包
使用的时候没有这种限制
包的导入是在以当前执行文件的文件夹下,为相对路径进行查找对应关系
from 包 import
从哪里导入什么
import sys
sys.path.append("主程序目录")
sys.path.append("ATM")
5.日志模块的详细用法;
1.logger 产生日志
logger1=logging.getLogger('访问日志')
2.Filter 几乎不用
3.Hnaderler:接收logger传过来的日志,进行日志格式化,
可以打印到终端,也可以打印到文件
sh =logging.StreamHanderler() 打印到终端.
fh1=logging.FilterHandler('s1.log',encoding='utf-8')
logger1.setLevel(30)
sh.setLevel(10)
4. Formatter : 日志格式