本文共 3086 字,大约阅读时间需要 10 分钟。
总结:
函数变量作用域搜索范围:LEGB 从内向外搜索
L:local 本地 局部变量
E:enclosing 嵌套 外部函数变量
G:global 全局
B:built-in 内置
a=100def func(): a=10 def inner_func(): a=1 print(max) inner_func()func()''''''
——————分割线——————
匿名函数:简化函数定义
格式:lambda 参数1,参数2,...:运算
冒号分割函数和计算
def add(a,b): s=a+b return sf=adds = lambda a,b:a+bprint(s) #结果表明s是一个函数result = s(1,2)print(result)'''at 0x000002054BF2F040>3'''
匿名函数可以作为参数出现
def func(x,y,func): print(x,y) print(func) s = func(x,y) print(s)func(1,2,lambda a,b:a+b)'''1 2at 0x0000028AF958A310>3'''
匿名函数和内置函数结合应用
tip:ctrl+b查看内置函数 或者ctrl+单击鼠标左键
max函数
list1=[4,1,9,0,3,4]m=max(list1)print('列表的最大值:',m)list2=[{'a':10,'b':20},{'a':13,'b':21},{'a':19,'b':32}]#找每个字典a的最大值#m=max(list2) TypeError: '>' not supported between instances of 'dict' and 'dict'm=max(list2,key=lambda x:x['a'])'''key=func改变遍历规则,不再直接遍历,而是以key定义的方式遍历元素lambda x:x['a']即为def func(d): return d['a']'''print('列表的最大值:',m)'''列表的最大值: 9列表的最大值: {'a': 19, 'b': 32}'''
map函数
list1=[4,1,9,0,3,4]result=map(lambda x:x+2,list1)print(result)print(list(result))'''
lambda仅仅用于加减乘除操作么? --->可以结合三元运算符
list1=[4,1,9,0,3,4]func = lambda x:x if x%2==0 else x+1result=func(5)print(result)#用map函数完成result = map(lambda x:x if x%2==0 else x+1,list1)print(list(result))'''相当于 (底层)for index,i in enumerate(list1): if i%2!=0: list1[index]=i+1''''''运行结果:6[4, 2, 10, 0, 4, 4]'''
reduce函数 对可迭代中的元素进行加减乘除运算的函数
def reduce(function, sequence, initial=_initial_missing)
特点:函数必须有两个参数
from functools import reducetuple1=(3,2,6,5,7,0)result=reduce(lambda x,y:x+y,tuple1)print(result)tuple2=(3,) #默认为Noneresult=reduce(lambda x,y:x+y,tuple2)print(result)'''233'''
filter函数 filter(function or None, iterable)--> filter object 返回filter对象 过滤器
list1=[3,2,60,5,73,10]result=filter(lambda x:x>10,list1)print(list(result))'''[60, 73]'''
students = [ {'name': 'tom', 'age': 20}, {'name': ' lucy', 'age': 19} , {'name': 'lily', 'age': 13}, {'name' : 'mark', 'age': 21}, {'name' : 'jack', 'age': 23}, {'name':'steven', 'age': 18},]#找出所有年龄大于 20岁的学生result=filter(lambda x:x['age']>20,students)print(list(result))'''[{'name': 'mark', 'age': 21}, {'name': 'jack', 'age': 23}]'''
sorted函数 sorted(__iterable, key, reverse)
students = [ {'name': 'tom', 'age': 20}, {'name': ' lucy', 'age': 19} , {'name': 'lily', 'age': 13}, {'name' : 'mark', 'age': 21}, {'name' : 'jack', 'age': 23}, {'name':'steven', 'age': 18},]#按照年龄从小到大排序students=sorted(students,key=lambda x:x['age'])print(students)'''[{'name': 'lily', 'age': 13}, {'name': 'steven', 'age': 18}, {'name': ' lucy', 'age': 19}, {'name': 'tom', 'age': 20}, {'name': 'mark', 'age': 21}, {'name': 'jack', 'age': 23}] 一行上'''
递归函数
普通函数的一种表现形式,特点:函数自己调用自己
特点
1.递归函数必须要设定终点
2.通常会有一个入口,递归次数由入口决定
3.有入口和对应的出口 没出口会无限循环
def f1(n): if n>0: print('--->',n) f1(n-1) else: print('--->',n)f1(3)'''---> 3---> 2---> 1---> 0'''
例子:累加
def sum(n):#1~n if n==0: return 0 else: return n+sum(n-1)result=sum(10)print(result)'''55'''
转载地址:http://xzegn.baihongyu.com/