python杂谈1
- 迭代:从某个地方(比如一个列表)取出一个元素的过程。使用一个循环来遍历某个东西时,这个过程本身就叫迭代。
- 迭代器:任意对象,只要定义了next(python2)或者__next__方法,它就叫一个迭代器。
- 可迭代对象:python中任意对象,只要它定义了可以返回一个迭代器的__iter__方法,或者定义了支持下标索引的__getitem__方法,
那么它就是一个可迭代对象。简单说,可迭代对象就是能提供迭代器的任意对象。 - 生成器:是一种特殊的迭代器,只能对其迭代一次,yield一个值。
- 装饰器:修改其他函数功能的函数。
- 开发环境:测试环境 生产环境
- 可变类型与不可变类型:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变。
- 可变类型:列表,字典,集合
- 不可变类型:数字,字符串,元组
- 不定长参数1:*args加了星号的变量args会存放所有未命名的变量参数,args为元组。
- 不定长参数2:**kwargs加路**的变量kwargs会存放命名参数,即形如key=value的参数,kwargs为字典。
- 死锁产生的四个必要条件:1.互斥条件 2.不可剥夺条件 3.请求和保持条件 4.循环等待条件。
- 魔法方法
- __init__()用来做变量初始化或赋值操作,在类实列化对象的时候,会自动调用,可以带参数传递。
- __str__() 该方法需要return一个数据,并且只有self一个参数,当在类的外部print(对象)则打印这个数据。
- __del__() 创建对象后,python解释器默认调用__init__()方法,当删除对象时,python解释器默认调用__del__()方法。
- __new__(cls) 该方法至少要有一个参数cls,代表要实列化的类,此参数在实列化时有python解释器自动提供。该方法必须要有返回值,返回实列化出来的实列,可以return父类__new__出来的实例或者是直接是object的__new__出来的实例。__init__有一个参数self,就是这个__new__返回的实例,将类比作制造商,__new__方法就是前期的原材料购买环节,__init__方法就是在原材料的基础上加工,初始化商品的环节。
- __all__变量:一个文件中有__all__变量,在使用from module import * 时,只有给__all__内指定的属性、方法、类可以被导入,若没有定义,则导入模块内的所有共有属性、方法、类。