python笔记

函数式编程

函数

  • 函数是Python内建支持一种封装(将大段代码拆成函数)
  • 通过函数的调用,可以将复制的任务分解。

函数式编程(Functional Programming)

计算机(Computer)和计算(Compute)

抽象程度 程序语言 距离硬件
越高 越高级 越远
越低 越低级 越近

函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程编写的函数是没有变量的。

是否允许使用变量的编程

没有变量 使用变量
没有变量状态 内部变量状态不确定
没副作用 有副作用

特点:

允许把函数本身作为参数传入另一个函数,还允许返回一个函数

高阶函数(Higher-order function)

变量可以指向函数

例:

>>> abs(-10)
10
>>> abs #只写abs
<built-in function abs>
>>> x = abs(-10) #将函数调用的结果赋值给变量
>>> x
10
>>> f = abs
>>> f
<built-in function abs>
>>> f = abs
>>> f(-10)
10 #成功,变量f已经指向abs函数本身

结论:

函数本身也可以赋值给变量,即:变量可以指向函数

函数名也是变量

函数名其实就是指向函数的变量

例:

>>> abs = 10
>>> abs(-10) #将abs指向其他对象
Traceback (most recent call last):
File "<stdin>", line 1, in <moudule>
TpyeError: 'int' object is not callable
# 把abs指向10后无法调用该函数,因为abs指向了整数10
# 恢复abs函数,请重启Python交互环境
# 为什么重启就恢复,因为abs函数实际是定义在__bulitin__模块中,要使abs变量指向在其他模块生效,要用__builtin__.abs = 10

传入函数

高阶函数:一个可以接收另一个函数作为参数的函数

简单的高阶函数

def add(x, y, f):
return f(x) + f(y)

结论:

把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式

map()和reduce()函数

map()函数

  • map()函数:两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
  • map()作为高阶函数,把运算规则抽象化。

map()实践:

>>> def f(x)
... return x * x
...
>>> r = map(f, [1, 2, 3, 4, 5, 6])
>>> list(r) #将map传入的函数依次作用到序列
[1, 4, 9, 16, 25, 36]

reduce()函数

  • reduce()函数:把结果继续和序列的下一个元素做累积计算。

reduce()实践:

>>> from functools import reduce
>>> def add(x, y):
... return x + y
...
>>> reduce(add, [1, 3, 5, 7]) #add(add(add(1, 3), 5), 7)
16

练习

利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。

输入:['adma', 'LISA', 'barT']

输出:['Adam', 'Lisa', 'Bart']

de

Python笔记(二)的更多相关文章

  1. python笔记二(数据类型和变量、编码方式、字符串的编码、字符串的格式化)

    一.数据类型 python可以直接处理的数据类型有:整数.浮点数.字符串.布尔值.空值. 整数 浮点数 字符串:双引号内嵌套单引号,可以输出 i'm ok. 也可以用\来实现,\n 换行 \t tab ...

  2. guxh的python笔记二:函数基础

    1,函数的参数 1.1,查看函数的参数类型 def run(a, *args, b, **kwargs): return a + b 可以通过如下方式查看参数类型: import inspect k ...

  3. python笔记二

    一 运算符 1算术运算+ - * /  % ** //其中%为取余,**为取幂如2**10=1024    9//4=2 需要注意的是python2.7中如9/2=4 需要正确表示,则在开头添加 fr ...

  4. python笔记二(mysql数据库操作)

    python2.x使用MySQLdb python3.x使用pymysql代替MySQLdb 不过我使用的是python3.5,MySQLdb还是可以在python3.5使用的. #!/usr/bin ...

  5. Python笔记(二)查找重复元素

    一.查找数列重复元素---count() >>> list = [,,,,,,,,,,,] >>> set = set(list) >>> for ...

  6. python 笔记二

    17.进程线程 进程间通信方式:管道Pipe:队列Queue:共享内存Value.Array.Manager: 多进程同步:锁Lock.递归锁RLock.Condition(条件变量):事件event ...

  7. Python笔记(二十九)_模块

    模块 在Python中,一个.py文件就是一个模块 if __name__ == '__main__':所有模块都有一个 __name__ 属性,__name__ 的值取决于如何应用模块 run当前文 ...

  8. Python笔记(二十六)_魔法方法_属性的魔法方法

    属性的魔法方法 __getattribute__(self,name):当该类的属性被访问时,自动触发,是最先被触发的属性方法 __setattr__(self,name,value):当一个属性被设 ...

  9. Python笔记(二十四)_魔法方法_运算符的魔法方法

    算数运算方法 .反运算方法 以对象A+对象B为例,都是将A作为self值,而B作为other值传入__add__(self,other)方法: 当用户输入A+B,就会调用重写的add方法: >& ...

随机推荐

  1. hdu 2604 Queuing(推推推公式+矩阵快速幂)

    Description Queues and Priority Queues are data structures which are known to most computer scientis ...

  2. Markdown 标记语言指北

    这是班刊约稿的一篇文章. 全文约6000字, 预计需要 60 分钟读完. Markdown 标记语言指北 TOC 什么是 Markdown? Markdown 可以用来干什么? 第一步? 一些专业一点 ...

  3. 2018中国大学生程序设计竞赛 - 网络选拔赛 Find Integer

    Find Integer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tot ...

  4. fiddler(二)、配置抓取https协议

    打开fiddler,用火狐或者谷歌浏览器访问https协议的网页,如:https://www.baidu.com/,会报不安全的连接错误 这时就需要我们做一些配置,才能抓取https协议的网页. 首先 ...

  5. html5 代码画兰博基尼跑车,6不6你说的算!

    源代码下方 由于本人喜爱html5,无聊所画: 画图需要掌握; 1.画布,画笔,画圆,给画笔添加颜色.(注:掌握这几点,你就可以称霸画图界了.) 虽然没有画画天赋,但代码写的也是溜溜滴!(注:此图没有 ...

  6. [CSP-S模拟测试]:中间值(二分)

    题目背景 $Maxtir$喜欢序列的中间值. 题目传送门(内部题127) 输入格式 第一行输入两个正整数$n,m$,其中$m$是操作和询问次数. 接下来两行每行输入$n$个非负整数,每一行分别表示两个 ...

  7. IMDB Classification on Keras

    IMDB Classification on Keras In the book of Deep Learning with Python, there is an example of IMDB m ...

  8. http协议详解1

    一.http协议url组成部分详解:1.协议类型2.ip(服务器地址)3.port(或域名)4.path(请求资源所在地址)5.?(资源地址与参数的分割符合)6.参数(请求参数)7.&(多个参 ...

  9. Kibana 5.5.2 安装包下载 (各种历史版本下载)

    背景说明 最近项目中在使用 5.5.2 版本的  Elasticsearch 作为数据库,使用的是以前的老版本. 用到 Elasticsearch ,难免要和其相关基本操作命令打交道.选择一款顺手的工 ...

  10. ABAP 实现内表自定义的F4功能

    “实现多列内容的F4功能 REPORT Z_TAB_TEST.   TYPES: shlp_descr TYPE shlp_descr .   DATA: BEGIN OF itab OCCURS 0 ...