一、lambda表达式
lambda parameter_list: expression
# 匿名函数

def add(x,y):
return x+y print(add(1,2)) f = lambda x,y: x+y print(f(1,2))
二、三元表达式
# x >y ? x :y

# 条件为真时返回的结果 if 条件判断 else 条件为假时的返回结果

x= 2
y=1
r = x if x > y else y
print(r) #
三、map
def square(x):
return x*x # for x in list_x:
# square(x) # map 等价于上面的for 循环并且执行每一次函数 对于 所传 集合和序列的每一项 都执行 square 这个函数 并且 返回这个函数的每一个返回值
r = map(square, list_x)
print(r) # <map object at 0x0000014E44D86630>
print(list(r)) # [1, 4, 9, 16, 25, 36, 49, 64]
四、map与lambda
list_x= [1,2,3,4,5,6,7,8]

def square(x):
return x*x # 匿名函数 替代 square 函数
r = map(lambda x: x*x, list_x)
print(list(r)) # [1, 4, 9, 16, 25, 36, 49, 64]
list_x= [1,2,3,4,5,6,7,8]
list_y= [1,2,3,4,5,6,7] def square(x):
return x*x # 匿名函数 替代 square 函数 map(func, *iterables)
r = map(lambda x,y: x*x +y, list_x,list_y)
print(list(r)) # [2, 6, 12, 20, 30, 42, 56, 72]
五、reduce
from functools import reduce

list_x= [1,2,3,4]

# reduce 连续计算,连续调用lambda
r= reduce(lambda x,y: x+y,list_x)
# reduce计算过程 连续计算
# 1+2=3
# 3+3=6
# 6+4=10
print(r) # r= reduce(lambda x,y: x*y,list_x)
print(r) # #第三个参数 是初始值
r= reduce(lambda x,y: x*y,list_x,10)
print(r) #
 
六、filter
#filter 过滤

list_x= [1,0,1,0,0,1]
# 根据函数返回真假 判断当前元素是否包含在集合里面
r = filter(lambda x: True if x==1 else False, list_x)
print(list(r)) # [1, 1, 1]
七、命令式编程vs函数式编程
map reduce filter
lambda 算子
 
 
八、装饰器 一
引入装饰器概念
#装饰器  很频繁 很实用
# 类似C#特性
# 对修改是封闭的, 对扩展是开放的
import time def f1():
print("hello") def f2():
print("hello") def print_time(func):
print(time.time())
func() print_time(f1)
print_time(f2) 结果:
1534744900.0469174
hello
1534744900.0469174
hello
九、 装饰器 二
import time

def decortator(func):
def wrapper():
print(time.time())
func()
return wrapper def f1():
print("hello") f = decortator(f1)
f() 结果:
1534745267.9373472
hello
十、装饰器 三
import time

def decortator(func):
def wrapper():
print(time.time())
func()
return wrapper # 装饰器 特别的 语法
@decortator
def f1():
print("hello") f1() 结果:
1534745521.8246493
hello

AOP 设计模式

十一、装饰器 四

多参数输入

import time

def decortator(func):
def wrapper(*args):
print(time.time())
func(*args)
return wrapper # 装饰器 特别的 语法
@decortator
def f1(func_name):
print("hello"+func_name) @decortator
def f2(func_name,func_name2):
print("hello"+func_name+func_name2) f1('f1name')
f2('name','name2') 结果:
1534746043.7318072
hellof1name
1534746043.7318072
hellonamename2
十二、装饰器 五
import time
#*args 多参数, **kw 关键字
def decortator(func):
def wrapper(*args, **kw):
print(time.time())
func(*args, **kw)
return wrapper # 装饰器 特别的 语法
@decortator
def f1(func_name):
print("hello"+func_name) @decortator
def f2(func_name,func_name2):
print("hello"+func_name+func_name2) @decortator
def f3(func_name,func_name2, **kw):
print("hello"+func_name+func_name2)
print(kw) f1('f1name')
f2('name','name2')
f3('name1','name2',a=1,b=2,c='') 结果:
1534746321.3270056
hellof1name
1534746321.3270056
hellonamename2
1534746321.3279607
helloname1name2
{'a': 1, 'b': 2, 'c': ''}
十三、装饰器 六

api接口

身份验证,防止攻击等

装饰器 很重要

Python(十) 函数式编程: 匿名函数、高阶函数、装饰器的更多相关文章

  1. Python学习札记(二十) 函数式编程1 介绍 高阶函数介绍

    参考: 函数式编程 高阶函数 Note A.函数式编程(Functional Programming)介绍 1.函数是Python内建支持的一种封装,我们通过一层一层的函数调用把复杂任务分解成简单的任 ...

  2. day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  3. Python---12函数式编程------12.1高阶函数

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  4. Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

    文件操作(续) 获得文件句柄位置,f.tell(),从0开始,按字符数计数 f.read(5),读取5个字符 返回文件句柄到某位置,f.seek(0) 文件在编辑过程中改变编码,f.detech() ...

  5. python学习三十四天函数高阶函数定义及用法

    python函数高阶函数是把函数当成一个变量,传递给函数作为参数,或者函数的返回值里面有函数,都称为高阶函数, 1,把函数作为参数传递 def dac(x,y): return x+y def tes ...

  6. python之路(4)高阶函数和python内置函数

    前言 函数式编程不用变量保存状态,不改变变量 内置函数 高阶函数 把函数当作参数传给另一个对象 返回值中包含函数 使用的场景演示: num_test = [1,2,10,5,8,7] 客户说 :对上述 ...

  7. Python复习笔记(四)高阶函数/返回函数/匿名函数/偏函数/装饰器

    一.map/reduce map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次 作用到序列的每个元素,并把结果作为新的Iterator返回. reduce r ...

  8. Python 编程基础之高阶函数篇(一)

      高阶函数:能接受函数作为参数的函数. 如: f=abs def   add(x,y,f): return f(x)+f(y) 如果我们用:add(-5,9,f)来调用该高阶函数,则返回结果为:14 ...

  9. python递归,装饰器,函数, 高阶函数

    在函数内部,可以调用其它函数,如果一个函数在内部调用自身本身,这个函数就是递归函数 递归特性:1.必须有一个明确的结束条件 2.每次进入更深一层递归时,问题规模比上次递归都有所减少(10-8-5等) ...

  10. 函数式编程与React高阶组件

    相信不少看过一些框架或者是类库的人都有印象,一个函数叫什么creator或者是什么什么createToFuntion,总是接收一个函数,来返回另一个函数.这是一个高阶函数,它可以接收函数可以当参数,也 ...

随机推荐

  1. Android干货大放送:书籍、教程、工具各种全

    最全干货分享,本文收集整理了Android开发所需的书籍.教程.工具.资讯和周刊各种资源,它们能让你在Android开发之旅的各个阶段都受益. 入门 <Learning Android(中文版) ...

  2. spring揭秘 读书笔记 二 BeanFactory的对象注冊与依赖绑定

    本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,并且IoC Service Pr ...

  3. USACO Ski Course Design解析和C语言实现

    题目大意: John农场有N(1=<N<=1000)小丘陵(山),它们高度的范围从0 到 100 但仅仅有当最大的高度差不大于17时.才干够避税.John对它们进行改造,从高的丘陵上取土放 ...

  4. Web端本地存储

    1.需求背景:当用户在页面上添加一行一行的数据时,突然发现网络断掉了,页面上编辑的数据没法保存进数据库,所以需要一个本地端的临时保存功能,以便在网络通畅后重新加载出来! 2.解决方案: 结合网上搜刮, ...

  5. django 笔记11 装饰器

    在views.py创建 一般用来cookies的装饰器 def auth(func): def inner(request, *args, **kwargs): v = request.COOKIES ...

  6. Laravel-数据库队列

    Laravel-数据库队列 标签(空格分隔): php 介绍 Laravel队列为不同的后台队列服务提供统一的API,例如Beanstalk,Amazon SQS, Redis,甚至其他基于关系型数据 ...

  7. POJ 2248 搜索

    剪枝: 1.从后向前枚举 2.迭代加深 然后就0msAC了 //By SiriusRen #include <cstdio> using namespace std; int n,T,s[ ...

  8. spring boot actuator工作原理之http服务暴露源码分析

    spring boot actuator的官方文档地址:https://docs.spring.io/spring-boot/docs/current/reference/html/productio ...

  9. IDEA中FindBugs编码规范工具使用

    IDEA中安装FindBugs插件: file--Settings--Plugins 在Plugins搜索FindBugs: 安装完成后在项目中选中文件右键找到findBugs: 检查代码结果: 按照 ...

  10. 001.TypeScript简介.md

    TypeScript是一门开源的,由微软开发维护的,发布于2012年10月的静态类型的语言: 他是ECMAScript的超集,支持JavaScript的所有语法和语义,并且在此基础之上提供了更多额外的 ...