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