1、if name = "mian"的作用
用于判断当前模块是被其他模块调用,还是模块自身运行,因为当自身运行时__name__=main,而被其他模块调用时__name__=模块名,不满足条件便不会执行条件所包含代码。
2、构造函数
包含在类中,实例化对象时,会自动执行构造函数中的语句。不能被调用,也不能返回值。
def __init__(self) xxxxxxxx
3、使用self.xxx = xxx的方式保存参数,self用于保存属性
4、对象可以动态添加属性,类变量用于提供一个于默认参数值,对象中可以修改,可以通过self.__class__.xxx访问类变量。
5、变量、函数等明明要规范不能和关键字冲突
6、一般使用定义类方法classmethod而不使用静态方法,类中的实例化方法(必须实例化类之后才能被调用)def func1():类方法(不需要实例化类就可以被类本身调用)@classmethod def func2():
7、python 类的成员变量中按可见度可划分为 public、protected (保护,子类可调用)private (私有)属性,但是三种都能够访问
8、继承,python所有的类都继承object,super().xxx表示父类
9、闭包(函数+在函数外部的自由变量)
外部函数中定义一个内部函数,内部函数引用外部函数中的变量,外部函数的返回值是内部函数,闭包传递的是变量,闭包不能引用值,闭包内要将值传递出去需要加上nonlocal,闭包不能循环
10、旅行者问题,①定义全局变量,每走一步不断累积②使用闭包,记住了自由变量的状态。
def walk.total(): total = 0 def. walk.result(step): nonlocal total new_total = total+step total = new_total return total return walk_result
11、列表生成式
可以直接在创建list的同时对列表进行赋值等操作
①生成1,4,9,16…的列表
range值为左闭右开
l=[i**i for i in range(xxx,yyy)]
②生成偶数
l=[i for i in range(1,10) if i % 2 ==0]
12、列表生成器
作用:使用生成式的时候,由于机器的容量是有限的,创建列表会受到内存限制,因此推出生成器来创建列表,可以节省内存空间,生成器为惰性
前提:列表元素可以按照某种算法推出来,那么就不必创建完整的list,从而节约出大量的空间,这种一边循环一遍计算的机制,称为生成器
使用圆括号()
打印生成器的元素:next()会生成异常需要捕获异常和for循环会自动捕获异常迭代对象
l=(i*i for i in range(1,10))
遇到yield时会执行上次返回yield中断处继续执行
13、迭代器和可迭代对象
可被for循环执行的数据都叫做可迭代对象iterable
python直接循环key-value
dict1={'a': '1', 'b': '2', 'c': '3'}
方案一:
for i in dict1:
print(i+':'+dict1[i])
方案二:
for i in dict1.keys():
print(i+':'+dict1[i])
方案三:
for i in dict1.items():
print(i)
判断是否是迭代器print(isinstance[],Iterator))
可以被next调用并不断返回下一个值的对象称为迭代器
iter可以使其变为迭代器
14、匿名函数lambda
lambda x, y, z: xyz
15、sort函数可以结合set进行排序和去重



