首页 > 代码库 > python学习-day16:函数作用域、匿名函数、函数式编程、map、filter、reduce函数、内置函数r
python学习-day16:函数作用域、匿名函数、函数式编程、map、filter、reduce函数、内置函数r
一、作用域
作用域在定义函数时就已经固定住了,不会随着调用位置的改变而改变
二、匿名函数
lambda:正常和其他函数进行配合使用。正常无需把匿名函数赋值给一个变量。
f=lambda x:x*x print(f) #打印指向该函数的内存地址 print(f(5)) #内存地址(5) 调用运行该函数 def cala(x): y=x*x return y z=cala(5) print(z) >>> <function <lambda> at 0x10137d950> 25 100
#name=alex #修改为:name=alex_sb f=lambda x:x+‘_sb‘ print(f(‘alex‘))
f=lambda x,y,z=10:x+y+z #可以存在默认数值 print(f(3,3)) >>>> 16
f=lambda x,y,z=10:(x+1,y+1,z+1) #如果需要对函数进行返回多个值,需要加括号 print(f(3,3)) >>> (4, 4, 11)
#这段代码 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n:n**n print(calc(10))
三、函数式编程
先过
四、map函数:
通过为了灵活实现多个字符串的多种变化,进行两次函数化的程序设计:
def pf(x): return x**2 def add_one(x): return x+1 def reduce_one(x): return x-1 def num_pin(fanfa,array): new_num=[] for i in array: new_num.append(fanfa(i)) return new_num new_num=num_pin(pf,num_1) print(new_num) new_num2=num_pin(add_one,num_1) print(new_num2) [1, 4, 100, 25, 9, 49] [2, 3, 11, 6, 4, 8]
num=[13,46,5,46,5,7] def pf(x): return x*x def jisuan(fuan,array): new_num=[] for i in array: new_num.append(fuan(i)) return new_num print(jisuan(pf,num)) f=lambda x:x*x print(f) print(lambda x:x*x) print(jisuan(f,num)) print(jisuan(lambda x:x*x,num)) >>>> [169, 2116, 25, 2116, 25, 49] <function <lambda> at 0x101b7da60> <function <lambda> at 0x101b7dae8> [169, 2116, 25, 2116, 25, 49] [169, 2116, 25, 2116, 25, 49]
#终极版本 def map_test(func,array): #func=lambda x:x+1 arrary=[1,2,10,5,3,7] ret=[] for i in array: res=func(i) #add_one(i) ret.append(res) return ret print(map_test(lambda x:x+1,num_l)) res=map(lambda x:x+1,num_l) print(‘内置函数map,处理结果‘,res) # for i in res: # print(i) print(list(res)) print(‘传的是有名函数‘,list(map(reduce_one,num_l))) msg=‘linhaifeng‘ print(list(map(lambda x:x.upper(),msg))) >>> [2, 3, 11, 6, 4, 8] 内置函数map,处理结果 <map object at 0x101b862e8> [2, 3, 11, 6, 4, 8] 传的是有名函数 [0, 1, 9, 4, 2, 6] [‘L‘, ‘I‘, ‘N‘, ‘H‘, ‘A‘, ‘I‘, ‘F‘, ‘E‘, ‘N‘, ‘G‘]
总结:
对可迭代对象的每一个元素进行逻辑运算:可以使用匿名函数:lambda或者自定义函数
①、print(list(map(lambda x:x**2,num))) ②、 num=[13,46,5,46,5,7] def pf(x): return x*x print(list(map(pf,num)))
四、filter函数
dsdsdsdsdsds
dsd
python学习-day16:函数作用域、匿名函数、函数式编程、map、filter、reduce函数、内置函数r
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。