初学 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. POJ 1207 3N+1 Problem

    更简单的水题,穷举法即可. 需要注意的点: 1.i 和 j的大小关系不确定,即有可能 i>j 2.即使i>j,最后输出的结果也要严格按照输出,亦即如果输入10,1,则对应输出也应为 10 ...

  2. web前端面试总结(二)

    这段时间大大小小面试确实不少,相对之前那篇被虐到体无完肤这几次确实相对来说有很大进步这里总结一下: 1.发现自己,站在个人角度我还是挺赞成出去面试的,不管你对现在的公司是否满意,当你觉得在这里已经有一 ...

  3. 【分享】我们用了不到200行代码实现的文件日志系统,极佳的IO性能和高并发支持,附压力测试数据

    很多项目都配置了日志记录的功能,但是,却只有很少的项目组会经常去看日志.原因就是日志文件生成规则设置不合理,将严重的错误日志跟普通的错误日志混在一起,分析起来很麻烦. 其实,我们想要的一个日志系统核心 ...

  4. 详解 try-with-resource

    [TOC] Oracle官方文档: http://docs.oracle.com/javase/7/docs/technotes/guides/language/try-with-resources. ...

  5. 第13章 Linux的网络管理

    本文目录: 13.1 Linux数据包转发功能 13.2 和网络相关的几个文件说明 13.2.1 网卡配置文件ifcfg-* 13.2.2 DNS配置文件/etc/resolve.conf 13.2. ...

  6. 【Netty】TCP粘包和拆包

    一.前言 前面已经基本上讲解完了Netty的主要内容,现在来学习Netty中的一些可能存在的问题,如TCP粘包和拆包. 二.粘包和拆包 对于TCP协议而言,当底层发送消息和接受消息时,都需要考虑TCP ...

  7. java怎么连接mysql数据库

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...

  8. 你猜这个题输出啥?-- java基础概念

    最近在看java编程思想,大部分内容都觉得没啥意思,但是突然看到一个基本概念(似乎都忘了),于是写了测试题,我想这辈子也不会忘这个概念了. 题目如下: public class Suber exten ...

  9. 从.src.rpm包中提取出完整的源码的方法

    1 什么是完整的源码 就是说,最初始的源码加上打了所有的patch后的源码,即最新的源码. 2 过程 2.1 从.src.rpm中提取完整的rpm工程文件 2.1.1 rpm to cpio rpm2 ...

  10. VB6之图像灰度与二值化

    老代码备忘,我对图像处理不是太懂. 注:部分代码引援自网上,话说我到底自己写过什么代码... Private Declare Function GetBitmapBits Lib "gdi3 ...