Python函数
一、定义函数
定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
示例:
def my_abs(x):
if x >= 0:
return x
else:
return -x
函数体内部的语句在执行时,一旦执行到return
时,函数就执行完毕,并将结果返回。
如果没有return
语句,函数执行完毕后也会返回结果,只是结果为None
。return None
可以简写为return
。
二、函数的参数
定义一个计算x2的函数:
def power(x):
return x * x
对于power(x)
函数,参数x就是一个位置参数。当我们调用power
函数时,必须传入有且仅有的一个参数x.
def power(x, n=2): # n=2
是power()
的默认参数
s = 1
while n > 0:
n = n - 1
s = s * x
return s
三、函数式编程(高阶函数)
函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数。Python
对函数式编程提供部分支持。由于Python
允许使用变量,因此,Python
不是纯函数式编程语言。
(1)map
函数
map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回。
示例:
def f(x):
return x * x
r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
print list(r)
map()
传入的第一个参数是f
,即函数对象本身。由于结果r是一个Iterator
,Iterator
是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list
(2)reduce
函数
reduce
把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
示例:
def add(x, y):
return x + y
print reduce(add, [1, 3, 5, 7, 9])
(3)filter
函数
filter()
也接收一个函数和一个序列。和map()
不同的是,filter()
把传入的函数依次作用于每个元素,然后根据返回值是True还是False
决定保留还是丢弃该元素。
def is_odd(n): # 删除偶数,只保留奇数
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])) # 结果: [1, 5, 9, 15]
filter()
函数,关键在于正确实现一个“筛选”函数。
注意到filter()
函数返回的是一个Iterator
,也就是一个惰性序列,所以要强迫filter()完成计算结果,需要用list()函数获得所有结果并返回list。
(4)sorted
函数
Python
内置的sorted()
函数就可以对list进行排序:
print sorted([36, 5, -12, 9, -21])
>>> [-21, -12, 5, 9, 36]
关注我的技术公众号,每天推送优质文章
关注我的音乐公众号,工作之余放松自己
微信扫一扫下方二维码即可关注:


网友评论