yield
yield的语句形式 yield 1
yield的表达式形式 x=yield
表达式形式的yield,协程函数
def eater(name): print('%s ready to eat' %name) while True: food yield print('%s start to eat %s'%(name,food)) g=eater('Tom') #制作生成器 next(g) #生成器初始化,执行时碰到yield暂停,相当g.send(None) g.send('黄焖鸡') #在暂停处继续运行,将值传给food
功能
x=yield
g.send('111'),先把111传给yield,由yield赋值给x
然后再往下执行,知道再次碰到yield停止,然后把yield后的返回值返回
包是包含有init.py文件的目录
包的用途:是从目录级组织模块
包相当于一个模块,本质还是给使用者
产生新的名称空间
以新建的名称空间为全局名称空间,执行模块中的代码
拿到模块名,指向该模块差生的名称空间
此时当做脚本执行 将需要执行的部分和需要被导入的部分分开
模块搜索路径先从内存找 ---> 内置模块 ---> sys.path路径
time
时间戳
print(time.localtime().tm_year)
格式化输出
print(time.strtime('%Y-&m-%d %H:%M:%S'))
json
把数据从内存中序列化的存储到磁盘中 序列化过程:dic ---> res=json.dumps(dic)--->f.write(res) 反序列化过程:res=f.read()--->res.json.loads(res)--->dic=res
with open('a.json','r') as f: dic=json.loads(f.read()) print(dic,type(dic))
json便捷操作
序列化
import json dic={ 'go':'die', 'hehe':'哈哈', }
json.dump(dic,open('b.json','w')) #直接打开文件写入反序列化
res=json.load(open('b.json','r')) #直接打开json文件 print(res,type(res))
pickle只支持python这种语言
os & sys
`import os print(os.getcwd()) #当前所在目录 print(os.listdir()) #当前目录下文件 print(os.name) print(os.path.abspath('')) print(os.path.getsize(r'C:\Users\Administrator\PycharmProjects\17\day6')) print(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #取出目录名字 ` import sys,time print(sys.argv) # list形式取出当前绝对路径形式的名字 print(sys) for i in range(50): sys.stdout.write('%s\r' % ('#' * i)) #\r 为移动到行首 sys.stdout.flush() #立即刷新到终端 time.sleep(0.1)
logging模块
日志级别种类,数值越大越严重,从数值小的开始匹配
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0
import logging logging.basicConfig(filename='access.log', format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', level=40, ) logging.debug('debug') logging.info('info') logging.warning('warning') logging.error('error') logging.critical('critical')