函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数

http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819196283586a37629844456ca7e5a7faa9b94ee8000

函数

定义函数

def my_abs(x):
if x >= 0:
return x
else:
return -x result =my_abs(10)
print(result)

高级特性

切片

Slice

L[:3]

迭代

d = {'a': 1, 'b': 2, 'c': 3}
for key in d:
print key #注意这个缩进 代替了{ }
 
 
for ch in 'ABC':
print ch
 
for x, y in [(1, 1), (2, 4), (3, 9)]:
print x, y
 

函数式编程

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数

Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

def add(x, y, f):
return f(x) + f(y)
print add(-5, 6, abs)
 
结果:11
 
把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。
 

map/reduce

 
如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念。
map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

reduce

把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
#map
def f(x):
return x * x
print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) #reduce
def fn(x, y):
print x,y, x * 10 + y
return x * 10 + y
print reduce(fn, [1, 3, 5, 7, 9])
filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
 
def is_odd(n):
return n % 2 == 1
print filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])
 
 
 

IO编程

 

读文件

f = open('D:\logs\log.txt', 'r')
print f.read()
 
写文件
f = open('/Users/michael/test.txt', 'w')
f.write('Hello, world!')
f.close()
 
 

中文注释

 
# 
## -*- coding: utf-8 -*- __author_='robin'
# 中文注释
print "Hello World!"
 
必须放在第一行
 
 
 

TCP编程

 
#
## -*- coding: utf-8 -*- # 导入socket库:
import socket
# 创建一个socket:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立连接:
s.connect(('m.y**t**.com', 80)) while True:
data = s.recv(1024)

【python】 入门 - 函数式编程的更多相关文章

  1. Python入门 函数式编程

    高阶函数 map/reduce from functools import reduce def fn(x, y): return x * 10 + y def char2num(s): digits ...

  2. Python学习总结之五 -- 入门函数式编程

    函数式编程 最近对Python的学习有些怠慢,最近的学习态度和学习效率确实很不好,目前这种病况正在好转. 今天,我把之前学过的Python中函数式编程简单总结一下,分享给大家,也欢迎并感谢大家提出意见 ...

  3. python基础-函数式编程

    python基础-函数式编程  高阶函数:map , reduce ,filter,sorted 匿名函数:  lambda  1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层 ...

  4. 可爱的 Python : Python中函数式编程,第一部分

    英文原文:Charming Python: Functional programming in Python, Part 1 摘要:虽然人们总把Python当作过程化的,面向对象的语言,但是他实际上包 ...

  5. Python的函数式编程: map, reduce, sorted, filter, lambda

    Python的函数式编程 摘录: Python对函数式编程提供部分支持.由于Python允许使用变量,因此,Python不是纯函数式编程语言. 函数是Python内建支持的一种封装,我们通过把大段代码 ...

  6. python 10函数式编程

                                                                               函数式编程 函数是Python内建支持的一种封装, ...

  7. python之函数式编程

    python提供了支持函数式编程的简单机制: 1. map函数 2. filter函数 3. reduce函数. 典型的M/R计算模型. 但还是有点简单...

  8. 可爱的 Python : Python中函数式编程,第二部分

    英文原文:Charming Python: Functional programming in Python, Part 2,翻译:开源中国 摘要:  本专栏继续让David对Python中的函数式编 ...

  9. 从 Racket 入门函数式编程

    一直想学学LISP,今天总算开了个头.如今学习LISP不是为了立就可以以用于实际项目的应用,而是为了学习一下函数式的思维方式,可以更加深入的了解计算的本质,可以更好的用C++, Java, Pytho ...

随机推荐

  1. java实现https,https接口请求

    /**********************https 接口'*******************/ /** * 安全证书管理器 */public class MyX509TrustManager ...

  2. 文本替换sed+字段处理cut,join+awk重新编排字段

    [1]sed工具(Stream Editor)--流编辑器 sed 本身也是一个管线(管道)命令,可以分析 standard input 的啦! 而且 sed 还可以将数据进行取代.删除.新增.截取特 ...

  3. Linux 驱动分类 与访问技术

    驱动开发概述 1.驱动分类 1.1 常规分析法 1.1.1  字符设备  字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,  这样的驱动通常实现open, close, read和wri ...

  4. IntelliJ IDEA 中集成使用git(2015年06月10日)

    前提:需要有一个git账号,https://github.com/ 1.首先需要下载一个Github,https://windows.github.com 安装之后的界面是酱紫的,非常简洁美观 2.在 ...

  5. C#_数组

     数组是相同数据类型的元素按一定顺序排列的集合,然后用一个变量名进行命名.新建控制台程序,声明一个静态方法 using System; using System.Collections.Gener ...

  6. Android文字转语音

    虽然视觉上的反馈通常是给用户提供信息最快的方式,但这要求用户把注意力设备上.当用户不能查看设备时,则需要一些其他通信的方法.Android提供了强大的文字转语音Text-to-Speech,TTS A ...

  7. 收藏的js学习小例子

    1.js模拟java里的Map function Map(){ var obj = {} ; this.put = function(key , value){ obj[key] = value ; ...

  8. MySQL写入插入数据优化配置

    *innodb_buffer_pool_size 如果用Innodb,那么这是一个重要变量.相对于MyISAM来说,Innodb对于buffer size更敏感.MySIAM可能对于大数据量使用默认的 ...

  9. 7款外观迷人的HTML5/CSS3 3D按钮特效

    1.CSS3超酷3D弹性按钮 按钮实现非常简单 今天我又要向大家分享一款实现超级简单的CSS3 3D弹性按钮,它在鼠标按下时不仅从视觉上感受到3D立体的效果,而且更有弹性的动画特效,非常可爱. 在线演 ...

  10. JS函数式编程【译】2.2 与函数共舞