python 学习笔记三 (函数)

1、把函数视为对象

def factorial(n):
'''return n!'''
return 1 if n < 2 else n*factorial(n-1)

print(factorial.__doc__)
x = factorial
print(x)
print(factorial)
print(x(10))

 

2、高阶函数:

接受函数为参数,或者把函数作为结果返回的函数是高阶函数。

常见的高阶函数: map(),sorted(),filter()

3、匿名函数:

什么时候使用匿名函数,假如这个方法使用次数就一次,就避免用def进行一个方法的定义,直接用lambda 进行定义

fruits=['apple','strawberry','banana','cherry']
y=sorted(fruits, key=lambda word: word[::-1])

针对 lambda word :word[::-1] 其实正常来说需要写一个方法

def  rever(str):

      return str[::-1]

y=sorted(fruits, key=rever)

4、可调用对象

使用callable()进行判断是否可以调用

5、用户定义的可调用类型

import  random
class BingoCage:
def __init__(self,items):
self._items = list(items) # 这里的写法很重要,避免对原来对list产生影响
random.shuffle(self._items)
def pick(self):
try:
return self._items.pop()
except IndexError:
raise LookupError('pick from empty BingoCage')
def __call__(self):
return self.pick()
定义了__call__方法后,BingoCage的对象就可以像对象一样的调用
bingcage=BingoCage([1,2,3,4])
bingcage() 就会去调用__call__方法

6、函数的内省

使用dir可以查看对象包含的各个函数

7、在函数编程里,有几个包很重要: operator 和 functools 包,对于支持函数式编程上有很重要的作用

posted on 2019-11-12 16:27  yingchen  阅读(243)  评论(0编辑  收藏  举报

导航