python中高阶函数改写学生信息管理程序_python学习-高阶函数

#-*- coding:utf-8 -*-

'''

话说高阶函数:

能用函数作为参数的函数

称为高阶函数

'''

#函数作参

def f(x):

return x*x

#map函数为内置函数,意思为将第二个参数的list作用到f函数中

#最后的结果为一个list

print map(f,[1,2,3,4,5])

#reduce函数为内置函数,意思将第二参数的序列作用到add函数值

#将结果做累加计算,最后的结果为一个数

def add(x,y):

return x+y

print reduce(add,[1,2,3,4,5,6])

#给出一个整数的每个位置上的数,得到该整数

def fn(x,y):

return x*10+y

print reduce(fn,[1,2,3,4,5])

#字符串转int

print reduce(fn,map(int,'12345'))

def str2int(s):

def fn(x,y):

return x*10+y

return reduce(fn,map(int,s))

print str2int('123456')

'''

上面函数的调用步骤是:

1.得到reduce(fn,map(int,'123456'))

2.得到reduce(fn,[1,2,3,4,5,6])

3.得到reduce(x*10+y,[1,2,3,4,5,6])

4.得到123456

'''

def str2int2(s):

return reduce(lambda x,y:x*10+y,map(int,s))

print str2int2('1234567')

#排序

print sorted('313568')

print sorted((1,8,4,2,5))

print sorted([9,8,7,6,5,4,3])

print sorted(['name','Age','Sex','address'])

#sorted也是一个高阶函数,所以它也可以传函数来改变排序的算法

#倒序

def inverted_order(x,y):

if x>y:

return -1

elif x

return 1

else:

return 0

print sorted((1,8,4,2,5),inverted_order)

#改变字符串排序算法

#上面字符串排序是根据ascii码来判断大小

#由于大写字母都比小写字母的ascii码小,

#但是一般我们都是按照字母表的顺序排列

#下面来变换一下算法,忽略大小写

def alphabet(s1,s2):

l1 = s1.lower()

l2 = s2.lower()

if l1 < l2:

return -1

elif l2 < l1:

return 1

else:

return 0

print sorted(['name','Age','Sex','address'],alphabet)

'''

函数作为返回值

其实刚才在将字符串转int时就涉及到了

这种将函数作为返回值的形式

'''

def sum(*args):

sum = 0

for n in args:

sum+=n

return sum

print sum(1,2,3,4,5)

#改装成返回函数的形式

def sum_pack(*args):

def sum():

sum1 = 0

for n in args:

sum1+=n

return sum1

return sum

g = sum_pack(1,2,3,4,5)

print g

#

#g输出为函数,想打印结果要调用函数

print g()

'''

闭包的定义:

字函数自动获取父函数的变量和参数

进入我的地盘就是我的

而且每一次调用返回的函数

都不是同一个对象

'''

g1 = sum_pack(1,2,3,4,5)

g2 = sum_pack(1,2,3,4,5)

print g1==g2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值