map:接受两个参数(函数,Iterable),map将传入的函数依次作用于Iterable的每个元素,并且返回新的Iterable
def f(x):
return x*x
r = map(f,[1,2,3,4]) #此时的r为惰性求值——可用next()和for...in取值
#通过list()返回全部
print(list(r)) #[1, 4, 9, 16]
reduce:接受两个参数(函数,序列),reduce把一个函数作用于序列上,返回的结果继续和序列的下一个元素做累积计算,其效果为:reduce(f,[x,y,z])=>f(f(x,y),z)
from functools import reduce
def add(x,y):
return x+y
reduce(add,[1,3,5,7,9]) #
filter:过滤序列。接受两个参数(函数,序列),filter把函数作用于序列上,根据返回值是否为True,决定是否放弃该元素
def is_odd(x):
return x%2==1
list(filter(is_odd,[1,2,3,4,5,6,7,8,9])) #filter惰性求值[1, 3, 5, 7, 9]
sorted:排序,可排序对象包括数字list、字符串list、dict等,可接受三个参数,后两个为可选
# sorted([],key=express,reverse=True) key:对每个元素的处理方法   reverse:是否反向排序
sorted([0,1,-2,-1,6,3,8],key=abs,reverse=True) #[8, 6, 3, -2, 1, -1, 0]
匿名函数 lambda:匿名函数关键字 :前的元素表示匿名函数的参数 匿名函数不用谢return表达式,返回值就是该表达式的值
m = list(map(lambda x: x*x,[1,2,3,4]))
print(m) #[1, 4, 9, 16]
装饰器:代码运行期间动态增加功能
#在now函数运行前自动打印日志
import functools
def log(func):
@functools.wraps(func)
def wrpper(*args,**kw):
print("call %s()" % func.__name__)
return func(*args,**kw)
return wrpper
# 调用装饰器
@log
def now():
print("hello") now() #call now() hello
偏函数:functools.partial 把函数的某些参数固定住,返回一个新的函数,使调用更简单
import functools
int2 = functools.partial(int,base=2)
print(int2("")) #
 
 
 

Python函数式编程(把函数作为参数传入)的更多相关文章

  1. Python进阶之函数式编程(把函数作为参数)

    什么是函数式编程? 什么是函数式编程? 函数:function 函数式:functional,一种编程范式 函数式编程是一种抽象计算的编程模式 函数≠函数式,比如:计算≠计算机 在计算机当中,计算机硬 ...

  2. 1.python函数式编程-map函数

    编程方法论 面向过程 函数式 面向对象 面向过程 将编程过程拆分成多个步骤,在函数中按照每个步骤进行编程: 函数式编程 编程语言定义的函数+数学意义的函数 1.不可变,不用变量保存状态,不修改变量: ...

  3. python函数式编程-偏向函数

    Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的偏函数和数学意义上的偏函数不一样. 在介绍函数参数的时候,我们讲到,通过 ...

  4. python函数式编程——返回函数

    1.函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 2.闭包 注意到返回的函数在其定义内部引用了局部变量args,所以,当一个函数返回了一个函数后,其内部的局部变量还 ...

  5. python函数式编程——匿名函数(lambda)

    匿名函数lambda lambda x:x*x x就是参数 相当于函数 def f(x): return x*x 匿名函数可以作为函数对象赋值给变量: >>> f = lambda ...

  6. python函数式编程-匿名函数

    >>> map(lambda x: x * x, [, , , , , , , , ]) [, , , , , , , , ] 关键字lambda表示匿名函数,冒号前面的x表示函数参 ...

  7. 转自:Python函数式编程指南(二):函数

    2. 从函数开始 2.1. 定义一个函数 如下定义了一个求和函数: 1 2 def add(x, y):     return x + y 关于参数和返回值的语法细节可以参考其他文档,这里就略过了. ...

  8. python 函数式编程:高阶函数,map/reduce

    python 函数式编程:高阶函数,map/reduce #函数式编程 #函数式编程一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 #(一)高阶函数 f=abs f print ...

  9. python函数式编程之返回函数、匿名函数、装饰器、偏函数学习

    python函数式编程之返回函数 高阶函数处理可以接受函数作为参数外,还可以把函数作为结果值返回. 函数作为返回值 def laxy_sum(*args): def sum(): ax = 0; fo ...

  10. Python中将函数作为另一个函数的参数传入并调用

    在Python中,函数本身也是对象,所以可以将函数作为参数传入另一函数并进行调用 在旧版本中,可以使用apply(function, *args, **kwargs)进行调用,但是在新版本中已经移除, ...

随机推荐

  1. 016-Spring Boot JDBC

    一.数据源装配 通过查看代码可知,默认已装配了数据源和JdbcTemplate System.out.println(context.getBean(DataSource.class)); Syste ...

  2. Linux:进程管理

    Linux:进程管理 进程间通信 文件和记录锁定. 为避免两个进程间同时要求访问同一共享资源而引起访问和操作的混乱,在进程对共享资源进行访问前必须对其进行锁定,该进程访问完后再释放.这是UNIX为共享 ...

  3. HackerRank - camelcase 【字符串】

    思路 找单词 第一个 单词 是小写 然后 后面的单词 第一位 都是大写 刚开始 初始化 ans = 1 然后 往后遍历 碰到 大写的 更新答案 AC代码 #include <cstdio> ...

  4. Java多线程系列 JUC线程池05 线程池原理解析(四)

    转载 http://www.cnblogs.com/skywang12345/p/3544116.html  https://blog.csdn.net/programmer_at/article/d ...

  5. 使用POI将doc文件转换为html

    需要的jar包有:有一些是依赖包,可以使用maven下载 doc文件转换为html文件 package com.gsww.sxzz.controller.service; import org.apa ...

  6. 1.angular js 学习网址

    双向数据绑定: http://html-js.com/article/1863

  7. MySQL中NOT IN语句对NULL值的处理

    与使用in时不同: 在使用in 时: SELECT COUNT(name) FROM CVE WHERE name NOT IN ('CVE-1999-0001', 'CVE-1999-0002'); ...

  8. myeclipse+maven

    1.Windows-->Preferences-->MyEclipse-->Maven4MyEclipse 2.Installations-->Add:添加Mavan 3.Us ...

  9. JS字符串转换成数字

    方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有 ...

  10. 修改(python) mysql 数据库 使其可以支持插入中文

    先建立一个数据库,名字叫xsk #!/usr/bin/python3 # -*- coding:utf-8 -*- import pymsql # 打开数据库连接(本机,用户,密码,数据库名) db ...