这篇来聊聊python的函数和对象
一、函数
Python内置了很多有用的函数,我们可以直接调用。
Python中函数也是一个对象,可以赋值,可以拷贝,可以像普通变量那样使用.
函数名其实就是指向函数的变量!对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算绝对值的函数!
python函数是一个对象,那么他也就有属性,函数对象有一个
__name__
属性,可以拿到函数名字
定义函数
def function_name(args):
function_body;
调用函数
调用函数的方式function_name(formal_args):
>>> def power(x):
... return x*x;
...
>>> power(4)
16
>>>
高阶函数
能够接收函数作为参数的函数称之为高阶函数
-
map()
- map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
>>> def f(x):
... return x * x
...
>>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]
-
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
...
>>> reduce(add, [1, 3, 5, 7, 9])
25
-
filter()
- 和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
def is_odd(n):
return n % 2 == 1
filter(is_odd, [