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文件的目錄
包的用途:是從目錄級組織模塊
包相當於一個模塊,本質還是給使用者
導入模塊乾的事情
產生新的名稱空間
以新建的名稱空間爲全局名稱空間,執行模塊中的代碼
拿到模塊名,指向該模塊差生的名稱空間
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=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')