1.异常
很多时候程序会出异常、报错等。
比如下边例子:
2/0除数不能为0,exception是所有异常的父类,e定义为父类的一个子类
如果有异常,raise e则是抛出异常能更明显看出是哪里的原因,print(e)则是打印出e的返回值。
如果没有报错则执行后边的程序,比如2/1的时候则不会报错,exception就不会执行。
finally可写可不写,如果要写一定写到最后。
try: print(2/0) except Exception as e: print("除数不能为0") #raise e print(e) finally: print("不管有没有错都要执行的程序")
try: print(2/1) except Exception as e: 程序运行没有错误,except则不会执行 print("除数不能为0") #raise e print(e) finally: print("不管有没有错都要执行的程序")
2.reset接口
接口三个方面返回值:msg code data
在异常里直接result自己约定的内容,来判断异常原因,更加清晰了解出错原因。
#reset接口 #{"msg":"除数不能为0",code:255,data:[{"a":1},{"b":2}]} import json def test(): result = dict() try: print(2/0) except Exception as e: result["msg"] = "除数不能为0" result["code"] = "255" result["data"] = [{"a":1},{"b":2}] #异常一般写到日志里 finally: return json.dumps(result) if __name__ == '__main__': print(test())
3.模块(module)和目录的区别,看是否有__init__.py文件 模块有,目录没有
常用的内置模块
alt+enter导入模块
时间模块datetime
from datetime import datetime 后边datetime是前边datetime的子模块,datetime是一个大的模块 print(datetime.now()
如果前边不导入大的datetime模块,只写import datetime,则后边的datetime需要调用大的datetime模块
import datetime print(datetime(子模块).datetime.now())
3.1 常用的时间格式
from datetime import datetime print(datetime.now()) print(datetime.now().year) print(datetime.now().month) print(datetime.now().day) print(datetime.now().minute) print(datetime.now().second) print(datetime.now().microsecond) print(datetime.now().strftime("%Y-%m-%d"))
这些时间格式主要是生成日志文件时候跟后边文件名拼成日志文件名称,例如:2018-04-23.nginx.log
3.2 转化格式
strftime相当于把时间转化成一个字符串 str form time
datetime.now.strftime(“%Y-%m-%d”)
strptime把一个字符串("2018-04-23")按照格式("%Y-%m-%d")转化成时间格式类型
a = datetime.now().strptime("2018-04-23","%Y-%m-%d") print(type(a))
<class 'datetime.datetime'>这个是a的格式
3.3 timedelta 多少天、周之前,没有年,间隔时间较短用这个
nowTime = datetime.now() nowTime += timedelta(weeks/days = -1) print(nowTime)