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

 功能

  1. x=yield

  2. g.send('111'),先把111传给yield,由yield赋值给x

  3. 然后再往下执行,知道再次碰到yield停止,然后把yield后的返回值返回

导入包
  • 包是包含有init.py文件的目录

  • 包的用途:是从目录级组织模块

  • 包相当于一个模块,本质还是给使用者

导入模块干的事情
  1. 产生新的名称空间

  2. 以新建的名称空间为全局名称空间,执行模块中的代码

  3. 拿到模块名,指向该模块差生的名称空间

if name == 'main'

此时当做脚本执行 将需要执行的部分和需要被导入的部分分开

模块搜索路径
  • 先从内存找 ---> 内置模块 ---> 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=reswith open('a.json','r') as f: dic=json.loads(f.read()) print(dic,type(dic))

json便捷操作

  1. 序列化 import json dic={ 'go':'die', 'hehe':'哈哈', } json.dump(dic,open('b.json','w')) #直接打开文件写入

  2. 反序列化

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模块

日志级别种类,数值越大越严重,从数值小的开始匹配
  1. CRITICAL = 50

  2. FATAL = CRITICAL

  3. ERROR = 40

  4. WARNING = 30

  5. WARN = WARNING

  6. INFO = 20

  7. DEBUG = 10

  8. 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')