一、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. 洛谷 P1045 麦森数 (快速幂+高精度+算位数骚操作)

    这道题太精彩了! 我一开始想直接一波暴力算,然后叫上去只有50分,50分超时 然后我改成万位制提高运算效率,还是只有50分 然后我丧心病狂开long long用10的10次方作为一位,也就是100亿进 ...

  2. php把数据表导出为Excel表的最简单、最快的方法(不用插件)

    亲测可用,把下面的数据换成自己的即可 <?php header("Content-type:application/vnd.ms-excel");header("C ...

  3. thymeleaf 拼接 超链接

    <dd><a th:href="@{/get/{id}(id=${user.id})}">基本资料</a></dd>

  4. 用Maven+IDEA+Eclipse组合获得最好的OpenJML体验

    OpenJML+SMTSolver的形式化验证想必大家都已经尝试过了.大家或许体验的更多的是IDEA上命令行输出版本的OpenJML插件,但真正得到官方支持的完全版OpenJML是它的Eclipse版 ...

  5. FPGA静态时序分析——IO口时序(Input Delay /output Delay)

    1.1  概述 在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛.因此,FPGA时序约束中IO口时序约束也是一个重点.只有约束正确 ...

  6. hdoj--3183--A Magic Lamp(贪心)

    A Magic Lamp Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  7. Keyboard input

    Keyboard input Python provides a build-in function called raw_input (in version 2.x) that gets input ...

  8. python-logging写日志编码问题

    python-logging写日志编码问题 标签(空格分隔): python 修改logging.FileHandler() 指定编码格式为:utf8 重新运行

  9. Design Doc: Session History for Out-of-Process iframes

    Design Doc: Session History for Out-of-Process iframes Charlie Reis, May 2014 This document outlines ...

  10. 利用第三方类 phpmailer 发邮件

    第一.百度一下 phpmailer 随便找个 girhub 网站 download 下来即可. 第二.复制如下代码放在项目根目录,填写完整你的账号信息,即可发送邮件.就是这么简单! <?php ...