• 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. Oracle instr

    instr函数 instr函数在Oracle/PLSQL中是返回要截取的字符串在源字符串中的位置.instr是一个非常好用的字符串处理函数,几乎所有的字符串分隔都用到此函数. 作    用    返回 ...

  2. fnciton

    -----oracle将字段字符分隔作为临时表 select column_value as site_id from table (select fn_split_clob(dashboard_pr ...

  3. Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 3) A

    Description Santa Claus is the first who came to the Christmas Olympiad, and he is going to be the f ...

  4. javascript各种宽高

    参考: http://www.w3cschool.cc/jsref/dom-obj-all.html http://www.cnblogs.com/wen12128/archive/2012/05/2 ...

  5. 【转】Checkpoint--与lazy writer区别

      checkpoint目的是减少数据库的恢复时间(服务奔溃或重启服务后的恢复),而lazy writer的目的是保证SQL OS 有空闲缓存块和系统有一定可用内存. Checkpoint和lazyW ...

  6. GOLANG 基本数据类型 整型

    基本数据类型-整型 种类     有符号(负号)      int8 int16 int32 int64 无符号(无符号) uint8 uint16 uint32 uint64 架构特定(取决于系统位 ...

  7. python进阶(四)---需要了解的魔法方法

    以下内容,源于个人理解所得,纯属臆测,爱信不信:-D.欢迎大家留言讨论指正. 1.__new__魔法方法: 原型:__new__(cls, *args, **kwargs) 说明:__new__魔法方 ...

  8. 谈谈Web前端工程师的定位

    原文地址:http://www.360doc.com/content/10/0708/17/1277406_37692580.shtml 2010-07-08  锋子chans   阅 1116  转 ...

  9. Nodejs学习总结 -Express入门(一)

    Express是基于Node.js平台开发的Web应用开发框架,下面我们入手学习. 官网 : http://www.expressjs.com.cn/ github:https://github.co ...

  10. asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法

    来源:http://ajxfxb.blog.163.com/blog/static/56675086201411634336878/ 作者是:没完没了的工作 asp.net报错“尝试读取或写入受保护的 ...