您的位置:首页 > 编程语言 > Python开发

【python】 入门 - 函数式编程

2015-06-25 21:15 597 查看
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数

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

函数

定义函数

defmy_abs(x):
ifx>=0:
returnx
else:
return-x

result=my_abs(10)
print(result)

高级特性

切片

Slice

L[:3]


迭代

d={'a':1,'b':2,'c':3}
forkeyind:
printkey#注意这个缩进代替了{}



forchin'ABC':
printch



forx,yin[(1,1),(2,4),(3,9)]:
printx,y


函数式编程

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

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

defadd(x,y,f):
returnf(x)+f(y)
printadd(-5,6,abs)


结果:11


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


map/reduce


如果你读过Google的那篇大名鼎鼎的论文“MapReduce:SimplifiedDataProcessingonLargeClusters”,你就能大概明白map/reduce的概念。

map
将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。[/code]
reduce

把一个函数作用在一个序列[x1,x2,x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:


#map
deff(x):
returnx*x
printmap(f,[1,2,3,4,5,6,7,8,9])

#reduce
deffn(x,y):
printx,y,x*10+y
returnx*10+y
printreduce(fn,[1,3,5,7,9])

filter()
也接收一个函数和一个序列。和
map()
不同的时,
filter()
把传入的函数依次作用于每个元素,然后根据返回值是
True
还是
False
决定保留还是丢弃该元素。[/code]

defis_odd(n):
returnn%2==1
printfilter(is_odd,[1,2,4,5,6,9,10,15])




IO编程


读文件

f=open('D:\logs\log.txt','r')
printf.read()


写文件

f=open('/Users/michael/test.txt','w')
f.write('Hello,world!')
f.close()



中文注释


#
##-*-coding:utf-8-*-

__author_='robin'
#中文注释
print"HelloWorld!"


必须放在第一行




TCP编程


#
##-*-coding:utf-8-*-

#导入socket库:
importsocket
#创建一个socket:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#建立连接:
s.connect(('m.y**t**.com',80))

whileTrue:
data=s.recv(1024)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: