从C#到Python:3 函数及函数编程
2010-09-30 22:42:07 来源:WEB开发网 1
2 #coding:utf-8
3
4 def map_func(lis):
5 return lis + 1
6
7 def filter_func(li):
8 if li % 2 == 0:
9 return True
10 else:
11 return False
12
13 def reduce_func(li, lis):
14 return li + lis
15
16 li = [1,2,3,4,5]
17
18 map_l = map(map_func, li) #将li中所有的数都+1
19 filter_l = filter(filter_func, li) #得到li中能被2整除的
20 reduce_l = reduce(reduce_func, li) #1+2+3+4+5
21
22 print map_l
23 print filter_l
24 print reduce_l
运行结果如下:
C:\>python test1.py
[2, 3, 4, 5, 6]
[2, 4]
15
3.29更新:根据JeffreyZhao提示,C#可以用委托实现函数编程的大部分功能。不过说实话我没这么用过,因为是接触了Python后才有的函数编程概念,以前用C#写程序就压根没有函数编程思想,虽然知道"委托允许将方法作为参数进行传递"。但具体细节估计各位C#高手比我要清楚得多,我就不乱写了。
3.5 小结
本章讨论了Python中函数的定义和使用方法,要点如下:
(1) Python用def关键字、函数名、括号、参数(可选)及冒号定义函数(要记得函数体缩进呀),函数可以有0、1或多个返回值;
(2) Python定义函数不需要(也不能)指定参数类型,它天生就是泛型的;
(3) Python支持(单独或同时使用)普通参数、关键字参数、元组参数和字典参数四种类型的参数,请学会灵活使用它们;
(4) 文档字符串(Docstrings)用于对Python的函数提供注释,供自省函数及IDE调用;
(5) lambda关键字用来定义匿名函数,它仅支持表达式,某些情况下可以简化代码编写量,但不要滥用;
(6) Python通过map、filter、reduce三个内置函数实现函数编程中映射、过滤及合并三类高阶函数功能,但注意map和filter可以用列表内涵替代(参见第2章)。
更多精彩
赞助商链接