第十三天
匿名函数
func = lambda a,b:a+b
lambda 相当于 def 定义函数
a,b 形参
a+b 返回值
def func(a,b):
return a+b
print(func(1,2))
例子
#接受一个可切片的数据,返回索引为0和2对应的值
func2=lambda a:(a[0],a[2])
print(func2([11,22,33,44]))
接受两个int参数 将较大的返回
func=lambda a,b: a if a>b else b
内置函数
1. bin(100) 10-->2
2. cot(10) 10-->8
3. hex(10) 10-->16
4. divmod(10,3) #(3,1) 10除以3 商3余1
5. round(3.14545455,2) 保留浮点数的小数位数 3.14
6.求x* *y次幂 (三个参数为x**y的结果对z取余)
pow(2,3) 8
pow(2,3,3) 2 余2
7. bytes
s1="小屋"
b=s1.encode("utf-8")
print(b)
b=bytes(s1,encoding="utf-8")
print(b) 两个一样
8.ord 输入字符找出该字符编码的位置 print(ord("a")) 97
9.chr 输入位置数字找字符
10.repr()返回一个对象的string形式(原形毕露)
s1="小屋"
print(repr(s1))
特殊用法
msg= "我叫%s"%(s1) # 我叫小屋
msg= "我叫%r"%(s1) #我叫'小屋'
11.all可迭代对象 全是True 才是True
12.any可迭代对象 一个是True 就是True
13.sep设置分隔符
14.end 设置尾部的字符 默认换行
print(self,*args,sep="",end="\n",file=None)
print(1,2,3,4,5,sep="|") # 1|2|3|4|5
print(1,end=" ")
print(2) # 1 2
15.list
l1=[1,2,3,4]
l2=list() #空列表
l2=list("123123156456")
16.dic 创建字典的方式
直接创建
元组的解构
dic=dict([(1,"one"),(2,"two")])
dic=dict(one=1,two=2)
update
fromkeys
字典推导式
17.abs()绝对值
18.sum()求和
19.reverse()翻转
l1.reverse()
l1=[i for i in range(10)]
obj=reverse(l1)
print(list(obj))
20.zip拉链方法***
l1=[1,2,3,4,5]
tul=("x","y","z")
s1="dasdsadasd"
obj=zip(l1,tul,s1)
for i in obj :
print(i)
print(list(obj))
纵向排列的形成一个元祖
(1, 'x', 'd')
(2, 'y', 'a')
(3, 'z', 's')
21.min max
min()
l1=[1,2,3,4,564654,7,9,-1]
print(min(l1))
凡是可以加key的.它会自动的将可迭代对象中的每个元素按照顺序传入key对应的函数中
以返回值比大小
// 以绝对值 方式返回最小值
print(min(l1,key=abs))
//求出值最小的键值对
print(min(dic)) #按照 键
print(min(dic.values())) #按照键值 比大小
#2
def func(a):
return dic[a]
print(min(dic,key=func))
#3
print(min(dic,key=lambda a:dic[a]))
以关键字比较大小,返回的不是你比较的那个值
l1=[("q",1),("b",-555),("w",11)]
c=min(l1,key=lambda x :x[-1])
print(c)
#// ('b', -555)
22.sorted 加key
l1=[("q",1),("b",-555),("w",11)]
print()
l1=[("q",1),("b",56),("w",11)]
print(sorted(l1,key=lambda x :x[-1])).
$// [('q', 1), ('w', 11), ('b', 56)]
23.filter 列表推导式的筛选模式
l1=[1,2,3]
print([i for i in l1 if i >2 ]) 返回的是列表
ret = filter(lambda) x : x>2,l1) 返回的是迭代器
print(list(ret))
24.map 列表推导式的循环模式
l1=[1,2,3]
print([i**2 for i in range(1,4)])
ret = map(lambda x:x**2,range(1,4))
print(list(ret))
25.reduce
from functools import reduce
def func(x,y):
return x+y
l=reduce(func,[1,2,3,4])
print(l)
- x 1 y 2 记录3
- x 3 y 3 记录 6
- x 6 y 4 记录10
返回10
闭包
def make_averager():
series = []
def averager(new_value):
series.append(new_value)
total = sum(series)
return total / len(series)
return averager
avg = make_averager()
print(avg(100000))
print(avg(110000))
print(avg(120000))
def make_averager():
series = []
def averager(new_value):
series.append(new_value)
total = sum(series)
return total/len(series)
return averager
avg = make_averager()
# 函数名.__code__.co_freevars 查看函数的自由变量
print(avg.__code__.co_freevars) # ('series',)
当然还有一些参数,仅供了解:
# 函数名.__code__.co_freevars 查看函数的自由变量
print(avg.__code__.co_freevars) # ('series',)
# 函数名.__code__.co_varnames 查看函数的局部变量
print(avg.__code__.co_varnames) # ('new_value', 'total')
# 函数名.__closure__ 获取具体的自由变量对象,也就是cell对象。
# (<cell at 0x0000020070CB7618: int object at 0x000000005CA08090>,)
# cell_contents 自由变量具体的值
print(avg.__closure__[0].cell_contents) # []
闭包的定义:
\1. 闭包是嵌套在函数中的函数。
\2. 闭包必须是内层函数对外层函数的变量(非全局变量)的引用。
闭包的作用:保存局部信息不被销毁,保证数据的安全性。
闭包的应用:
- 可以保存一些非全局变量但是不易被销毁、改变的数据。
- 装饰器。
series = []
def averager(new_value):
series.append(new_value)
total = sum(series)
return total / len(series)
return averager
avg = make_averager()
print(avg(100000))
print(avg(110000))
print(avg(120000))
#下面的结果就不对了:
print(make_averager()(100000))
print(make_averager()(110000))
print(make_averager()(120000))

浙公网安备 33010602011771号