• High order function
  1. map(f,Iterable),将f依次作用在Iterable的每个元素然后返回一个Iterator,再用list(map(f,Iterable))进行转换得到一个Iterable的结果;
  2. reduce(f,Iterable),函数f必须接收两个参数[如f(x,y),x表示之前的累积结果,y表示当前要参与运算的序列中的一个元素],reduce返回一个累积结果;
  3. filter(f,Iterable),筛选函数,将f依次作用在序列中的每个元素,若结果为true则保留元素,最终得到一个Iterator;
  4. sorted(Iterable,key=f),排序函数,按照f返回的结果作为key值进行自定义排序返回一个Iterable;   sorted(Iterable,key=f,reverse=True)表示进行反向排序。
  • 返回函数
  1. 在函数中定义函数,且外部函数返回所定义的函数,当调用外部函数时,相关变量和参数都保存在返回函数中,且返回函数并没有立刻执行,而是直到调用返回函数时才会执行;
  2. 每次调用外部函数f都会返回一个新函数g,每个返回的函数即使有传入相同参数,g1!=g2;
  3. 返回函数中不能引用任何循环变量或者可能会变化的变量。
  • 匿名函数

用lambda关键字表示,lambda x: x*x,冒号前面的x为参数,之后的为返回值。

  • 装饰器

1.装饰器的作用是为已经存在的对象添加额外的功能,而不改变已有对象本身,如插入日志、性能测试、事务处理、缓存、权限验证等场景;

2. 附上对一个作业题答案的理解:同时支持带参数或者不带参数的log。

import functools
def log(params):
def decorate(func):
@functools.wraps(func)#保证调用时的函数__name__属性不变
def wrapper(*args, **kw):
output = '%s %s()' % (params, func.__name__) or ('call %s()' % func.__name__)
print(output)
return func(*args, **kw)
return wrapper
if hasattr(text,'__call__'): #说明是无参数版本
func = params
params = None
return decorate(func) #应该是类似调用deorate()函数,返回一个wrapper;此处若没有前两句,直接return decorate(params),print出的文本是对函数的一个说明
else:
return decorate #带参版log,直接返回一个decorate函数
@log #语法糖
def now():
print('I am now!')
  • 偏函数

来自functools.partial 用来帮助创建一个偏函数,即把一个函数的某些参数设置默认值。e.g. int2=functools.partial(int,base=2) 把二进制字符串转为整数。

Python函数式编程学习笔记的更多相关文章

  1. python 函数式编程学习笔记

    函数基础 一个函数就是将一些语句集合在一起的部件,它们能够不止一次地在程序中运行.函数的主要作用: 最大化的代码重用和最小化代码冗余 流程的分解 一般地,函数讲的流程是:告诉你怎样去做某事,而不是让你 ...

  2. python网络编程学习笔记(三):socket网络服务器(转载)

    1.TCP连接的建立方法 客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较. 步骤 TCP客户端 TCP服务器 第一步 建立socket对象  建立socket对 ...

  3. Python核心编程--学习笔记--4--Python对象

    现在开始学习Python语言的核心部分.首先了解什么是Python对象,然后讨论最常用的内建类型,接下来讨论标准类型运算符和内建函数,之后给出对标准类型的不同分类方式,最后提一提Python目前还不支 ...

  4. Python核心编程--学习笔记--3--Python基础

    本章介绍基本的Python语法.编程风格:并简要介绍标识符.变量和关键字,以及变量占用内存的分配和回收:最后给出一个较大的Python样例程序来体验这些特性. 1 语句和语法 1.1 注释 可以在一行 ...

  5. Python核心编程--学习笔记--1--Python简介

    本章介绍了Python的背景知识,包括什么是Python.Python的起源以及Python的一些关键特性. 1 什么是Python Python是一门优雅而健壮的编程语言,它继承了传统编译语言的强大 ...

  6. Python核心编程--学习笔记--9--文件和输入输出

    本章将深入介绍Python的文件处理和相关输入输出能力,包括:文件对象(以及它的内建函数.内建方法和属性),标准文件,文件系统的访问方法,文件执行,最后简要涉及持久存储和标准库中与文件有关的模块. 1 ...

  7. Python核心编程--学习笔记--8--条件与循环

    本章讲述if.while.for以及与他们搭配的else.elif.break.continue.pass等语句. 1 if语句 语法:三部分——关键字if.条件表达式.代码块.(记住冒号) if c ...

  8. Python核心编程--学习笔记--7--字典和集合

    本章介绍Python语言中的映射类型(字典)和集合类型,包括操作符.工厂函数.内建函数与方法. 1 字典 字典是Python中唯一的映射类型——键key直接映射到值value.字典是容器类型,其对象是 ...

  9. Python核心编程--学习笔记--6--序列(下)列表、元组

    11 列表 类似于C语言的数组,但是列表可以包含不同类型的任意对象.列表是可变类型. 创建列表——手动赋值.工厂函数: >>> aList = [12, 'abc'] >> ...

随机推荐

  1. js定义对象的几种容易犯的错误

    //js定义对象的几种容易犯的错误function Person() { getName = function (){ console.info(1); }; return this;}//Perso ...

  2. SeleniumIDE从0到1 (Selenium IDE 录制)

    seleniumIDE安装成功后下面我们用百度网址来简单录制下: 简介一:百度输入框录制操作 1.打开SeleniumIDE 2.SeleniumIDE地址栏中输入百度网址:[https://www. ...

  3. JZ2440开发板学习 1. 刚接触开发板, 安装驱动

    一. jtag和串口驱动 1. 驱动下载 http://pan.baidu.com/s/1pJkAHJH 2. 驱动安装 禁用win10的驱动数字签名 http://www.100ask.org/bb ...

  4. Uva 11248 网络扩容

    题目链接:https://vjudge.net/contest/144904#problem/A 题意:给定一个有向网络,每条边均有一个容量.问是否存在一个从点1到点N,流量为C的流.如果不存在,是否 ...

  5. awk 高级技巧

    netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a ...

  6. Navicat for mysql 远程连接 mySql数据库10061、1045错误

    原文地址:http://www.111cn.net/database/mysql/46377.htm 有朋友可能会碰到使用Navicat for mysql 远程连接 mySql数据库会提示10061 ...

  7. Hibernate 继承映射

    @Entity@Inheritance(strategy=InheritanceType.SINGLE_TABLE)@DiscriminatorColumn()public class Animal ...

  8. [转]UE4 Blueprint编译过程

    Blueprint 编译概述   一.术语 Blueprint,像C++语言一下的,在游戏中使用前需要编译.当你在BP编辑器中,点击编译按钮时候,BP资源开始把属性和图例过程转换为一个类对象处理. 1 ...

  9. 通过js引用外部脚本(嘿嘿,方便直接在浏览器上调试抓取代码)

    最近折腾爬虫,后端使用jQuery进行数据采集,一般都是先从浏览器中将采集代码调试好后直接放到后端跑了. 有些网址没有引用jQuery,那调试起来就不方便了,可以用以下代码动态添加script标签,将 ...

  10. Python库安装

    标签(空格分隔): Python 安装pip 正如管理Java Project的Maven,管理Scalar Project的sbt一样,Python也有其管理工具 -- pip,也是今天我们的主角哦 ...