其他
1.迭代器
定义:帮助对某类对象(str/list/tuple/dict/set)中的元素进行逐一获取
可迭代对象:内部具有__iter__()方法且返回一个迭代地址。(可被for循环就是可迭代对象)
#列表转换迭代器 v1 = [1,2,3,4] v2 = iter(v1) var = v2.__next__() print(val) #进行第一次迭代输出1,执行几次迭代就输出几次 #迭代器想要获取每一个值,反复调用val = v2.__next__(),直到报错Lstoplteration错误,表示已经迭代完毕 #将一个对象变成可迭代对象,在类中实现__iter__方法且返回一个迭代器(生成器) class Foo1: class Foo2: def __iter__(self): def __iter__(self): return iter([1,2,3,4]) yield 1 obj = Foo1() yield 2 obj = Foo2()
2.生成器
定义:函数中如果存在yield,那么该函数就是一个生成器,调用生成器函数会返回一个生成器
生成器只有被for循环时,内部代码才会执行,每次循环都会获取yield返回值
return和yield同时存在时还是属于生成器
#生成器 def func(): arg = arg +1 yield 1 yield 2
3.异常处理
#基本格式 try: int('asd') v = [] v[100] #超出索引范围 except ValueError as e: #判断是不是这种错误 pass except IndexError as e: pass except Exception as e: print(e) #e是Exception类的对象,对象中有一个错误信息 finally: print('无论对错都会执行的代码') #主动触发异常 try: int('123') raise Exception('111') #主动抛出异常 except Exception as e: print(e) #输出111 #自定义异常 class MyException(Exception): #继承Excetion pass try: raise MyException(); except MyException as e: print(e)
4.项目的目录结构
简单的脚本:在引入模块时,默认名字短的在上
单可执行文件:if __name__ = '__main__':
start()
多可执行文件:bin(执行文件) conf(配置settings) src(业务逻辑) db(数据文件) lib(扩展模块) log(日志文件)
5.报错记录
StopIteration:迭代完毕无可迭代对象后报错
KeyError:查询的键不在字典中报错
SyntaxError:语句错误(变量名错误、结构错误)
TypeError:类型错误