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

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)

最新文章

  1. python基础七
  2. 级联两个bootstrap-table。一张表显示相关的数据,通过点击这张表的某一行,传过去对应的ID,刷新另外一张表。
  3. javascript同名变量
  4. 疯狂位图之——位图生成12GB无重复随机乱序大整数集
  5. JQUERY 模糊选择
  6. 10款优秀Vim插件帮你打造完美IDE
  7. UITextView添加一个placeholder功能
  8. nodejs的模块系统(实例分析exprots和module.exprots)
  9. [python] virtualenv下解决matplotlib中文乱码
  10. Li Fei-fei写给她学生的一封信,如何做好研究以及写好PAPER
  11. vmplayer中的fedora20无法进入图形界面
  12. 基于visual Studio2013解决C语言竞赛题之1006填空
  13. openstack私有云布署实践【8.2 身份认证keystone的API创建(办公网环境)】
  14. Centos7.2下部署Java开发环境
  15. Java单例模式之懒汉模式线程安全
  16. element UI Cascader 级联选择器 编辑 修改 数组 路径 问题(转载)
  17. P2709 小B的询问-莫队
  18. 30 进程process
  19. HDU 4763 Theme Section(KMP+枚举公共前后缀)
  20. layui与多级联动返填

热门文章

  1. hdu-5690 All X(快速幂+乘法逆元)
  2. centos下使用nohup
  3. 洛谷P1717 钓鱼
  4. Tensorflow之安装
  5. 数理方程:Fourier级数
  6. 关于Windows® API Code Pack for Microsoft® .NET Framework
  7. Xcode - 方法注释插件
  8. NSString字符操作
  9. 何为BFC
  10. 杭电ACM2085--核反应堆