python其他

其他

  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:类型错误

posted @ 2019-06-06 20:04  现实没有如果  阅读(216)  评论(0编辑  收藏  举报