python 入门总结(一) (2)

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()

经典类:遵循深度优先

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxgpj.html