初学 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,'')) def str2int(s):
def fn(x,y):
return x*10+y
return reduce(fn,map(int,s)) print str2int('')
'''''
上面函数的调用步骤是:
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('') #排序
print sorted('')
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<y:
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
#<function sum at 0x0134C0F0>
#g输出为函数,想打印结果要调用函数
print g() '''''
闭包的定义:
字函数自动获取父函数的变量和参数
进入我的地盘就是我的
而且每一次调用返回的函数
都不是同一个对象
''' g1 = sum_pack(1,2,3,4,5)
g2 = sum_pack(1,2,3,4,5)
print g1==g2

初学 Python(十二)——高阶函数的更多相关文章

  1. Scala学习十二——高阶函数

    一.本章要点 在Scala中函数是”头等公民“(可以作为参数,返回值,赋值给其他); 可以创建匿名函数,通常还会交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数 ...

  2. Python入门篇-高阶函数

    Python入门篇-高阶函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.高级函数  1>.First Class Object 函数在Python中是一等公民 函数也 ...

  3. Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted

    1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...

  4. Python中的高阶函数与匿名函数

    Python中的高阶函数与匿名函数 高阶函数 高阶函数就是把函数当做参数传递的一种函数.其与C#中的委托有点相似,个人认为. def add(x,y,f): return f( x)+ f( y) p ...

  5. python六十课——高阶函数之map

    1.高阶函数: 特点:函数的形参位置必须接受一个函数对象 分类学习: 1).map(fn,lsd1,[lsd2...]): 参数一:fn --> 函数对象 参数二:lsd1 --> 序列对 ...

  6. 匿名函数python内置高阶函数以及递归

    匿名函数 python定义一个函数通常使用def关键词,后面跟函数名,然后是注释.代码块等. def func(): '''注释''' print('from func') 这样就在全局命名空间定义了 ...

  7. python 函数式编程 高阶函数 装饰器

    # -*- coding:gb2312 -*- #coding=utf-8 # 高阶函数 import math def is_sqr(x): y = int(math.sqrt(x)) return ...

  8. Python学习笔记 - 高阶函数

    高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数abs()为例,调用该函数用以下 ...

  9. python 常用的高阶函数

    前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. map() map函数可以把一个迭代对象转换成另一个可迭代对象,不过在pyth ...

  10. python学习笔记——高阶函数map()

    满足以下两点中任意一点,即为高阶函数: 1.函数接收一个或多个函数作为参数 2.函数返回一个函数 1 描述 用函数和可迭代对象中每一个元素作为参数,计算出新的迭代对象 map() 会根据提供的函数对指 ...

随机推荐

  1. thinkphp3.2.3 版本使用redis缓存添加认证

    我在使用thinkphp3.2.3的时候 发现如果是使用redis缓存 设置了认证的redis能连接成功 却无法 set 操作 ,检查发现是没有认证导致的  $redis->auth这一步没有, ...

  2. 为什么使用bootstrap在一个页面同时做两个轮播效果时,只有第一个有效??

    我们都知道使用bootstrap做轮播效果非常快,但是有时候一个页面会需要两个轮播:但这个时候再次使用bootstrap做轮播效果时就会失效:原因在于bootstrap的Carousel问题,只要修改 ...

  3. 纯CSS3美化单选按钮radio

    这种纯CSS3美化单选按钮radio的方法适用于以下情况: 1.可兼容IE9以上,需要兼容IE8的要写IE的hack把样式去掉 2.只支持单选按钮radio,因为单选按钮选中样式的圆圈可以用CSS做出 ...

  4. 检查服务器是否开启GD库

    1.把以下代码复制到记事本中并保存成A.php<?phpOb_end_flush();header ("Content-type: image/png");$im = @im ...

  5. ecshop开发帮助

    http://www.ecshop.com/template_tutorial/ ECSHOP模板结构说明 http://help.ecshop.com/index.php ECSHOP帮助中心 ht ...

  6. Java学习笔记--动态代理

    动态代理 1.JDK动态代理 JDK1.3之后,Java提供了动态代理的技术,允许开发者在运行期创建接口的代理实例.JDK的动态代理主要涉及到java.lang.reflect包中的两个类:Proxy ...

  7. Python进阶-继承中的MRO与super

    Python进阶-继承中的MRO与super 写在前面 如非特别说明,下文均基于Python3 摘要 本文讲述Python继承关系中如何通过super()调用"父类"方法,supe ...

  8. 几种MQ消息队列对比与消息队列之间的通信问题

    消息队列 开发语言 协议支持 设计模式 持久化支持 事务支持 负载均衡支持 功能特点 缺点 RabbitMQ Erlang AMQP,XMPP,SMTP,STOMP 代理(Broker)模式(消息在发 ...

  9. NoSQL数据库:Redis适用场景及产品定位

    传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...

  10. 【Android Developers Training】 4. 启动另一个Activity

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...