sum() 求和
def extendList(val,list=[]): list.append(val) return list list1=extendList(10) print("list1=%s"% list1) # list=[10] list2=extendList(123,[]) print("list=%s" % list2) # list=[123] list3=extendList("a") print("list3=%s"% list3) # list=[10,"a"] key没有改变所有指向同一个对象 闭包闭包就是内层函数,对外层函数(非全部)的变量的引用
_closure_ 检测函数是否是闭包,使用函数名._closure_ 返回cell就是闭包,返回None就不是闭包
__iter__() 获取迭代器
__next__() 迭代对象
yield 返回结果 可以让函数分段执行
send(值) 让生成器向下执行一次,给上一个yield传一个值(第一个和最后一个是不用传的)
列表推导式
[最终的结果(变量) for 变量 in 可迭代对象 if 筛选的条件]
lst=[ i for i in range(1,15)]生成器表达式
g=(i for i in range(10)) print(list(g)) 不同点,一个是[] 一个是(),一个是一次性给你好内存,一个是一个一个给你 得到的值不一样,列表推导式得到的值一个生成器 生成器要值的时候才去取字典推导式
dic={lst[i]:lst2[i] for i in range(len(lst))}集合推导式
lst=["那化腾","马化腾","王建中","张建忠","张雪峰","张雪峰","张雪峰"] s={i for i in lst} print(s) 去重没有元组推到式,不过可以认为是生成器表达式
字典是key:value 集合是key
内置函数iter() 迭代
next() 输出下一个
print("aa","bb","cc") sep:分隔符 end最后
hash算法 目的是唯一,列表是不可哈希的,元组可以
callable() 是否是可以调用的
字符串的执行
eval 执行简单的运算
exec 执行字符串函数
divmod 求商和余数
round 五舍六入
pow(a,b) a的b次幂
sum() 求和
max() 最大值
min() 最小值
reversed 倒序 list()
slice()
s=slice(1,3,1) print(lst[s])repr 原样输出,过滤掉转义字符\n\t\r不管百分号
ord 返回编码表中的码位
chr 已知码位计算字符
format
enumerate() 把索引和元素一起获取,索引默认从0开始
lst=["A","B","c","d"] for index,el in enumerate(lst,100): print(index) print(el)all() 全部是True返回True(可迭代对象)
any() 有一个是True则是True(可迭代对象)
lembda() 匿名函数
a=lambda x:x*x 语法:lambda 参数:返回值__name__ 查看函数名
sorted 要给一个对象接受,reverseed 参数为True False 升序降序
lst=[ {"id":1,"name":"alex","age":18}, {"id":2,"name":"taibai","age":19}, {"id":3,"name":"wusir","age":13}, {"id":4,"name":"ritian","age":11}, {"id":5,"name":"nvshen","age":12}, ] def func(dic): return dic["age"] l1=sorted(lst,key=func) print(l1)filter 第一个参数是函数,第二个参数是可迭代的对象
lst=[1,3,4,5,6,7,8] li=filter(lambda i:i%2==1,lst) print(list(li)) list(filter(lambda dic:dic["age"]>40,lst))map
lst=[1,2,3,4,5,6,7] def func(i): return i*i li=map(func,lst) print(list(li)) lst1=[1,3,5,6,7,8] lst2=[2,43,4,5,6,8] print(list(map(lambda x,y:x+y, lst1,lst2))) #如果传入的多个参数,后面的列表要一一对应递归
面向对象Person.__dict__ 查询类中的所有内容(不能进行增删改操作)
函数.属性 对类中的单个的变量进行增删改查
类名+()产生一个实例(对象,对象空间)
自动执行类中的__init__ ,将对象空间传给__init__ 的self 参数
给对象封装相应的属性
Person.money="货币" # 增 Person.animal="中等动物" # 改 del Person.mind #删除 print(Person.__dict__)
class Count: count = 0 def __init__(self): Count.count = self.count + 1 查看类被调用几次通过类名可以更改我的类中的静态变量值
Count.count=6 Count.__dict__ 但是通过对象,不能改变只能引用类中的静态变量类的两个属性
静态属性就是直接在类中定义的变量
动态属性就是定义在类中的方法
组合(不太懂) from math import pi # 求圆和圆环的面积和周长 class Circle: def __init__(self,r): self.r=r def aera(self): return self.r**2*pi def perimeter(self): return self.r*2*pi class Ring: def __init__(self,r1,r2): self.r1=Circle(r1) self.r2=Circle(r2) def area(self): return self.r1.aera()-self.r2.aera() def perimeter(self): return self.r1.perimeter()+self.r2.perimeter() 继承只执行父类的方法:子类中不要定义与父类同名的方法
自执行子类的方法:在子类创建这个方法
既要执行子类的方法,又要执行父类的方法:
super().__init__(name,sex,age)继承:单继承,多继承
类:经典类,新式类
新式类:凡是继承object都是新式类
python3x 所有的类都是新式类,因为python3x中的类默认继承object
经典类:不继承object都是经典类
python2x 所有的类默认都不继承object,所有类默认都是经典类,你可以让其继承新式类
单继承:新式类,经典类的查询顺序一样
多继承:
新式类:遵循广度优先 类名.mro()
经典类:遵循深度优先