- 递归/尾递归(在于解释器优化) !!大多数编程语言没有针对尾递归做优化,Python解释器也没有做优化
- 函数的默认参数: 定义默认参数要牢记一点:默认参数必须指向不变对象!
可变参数* 关键字参数** - 切片,迭代,列表生成式( [x * x for x in range(1, 11)]),
- 生成器(在运行时生成)
- 只要把一个列表生成式的[]改成() next(g)获取!!generator保存的是算法,每次调用next(g),就计算出g的下一个元素的值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。!!
- yield Iterator是惰性计算的序列
- 高阶函数:传入函数。 map,reduce(累加) filter sorted
1 | from functools import reduce |
- 返回函数(lazy do)
- 匿名函数 lambda x: x * x
- Decorator:decorator就是一个返回函数的高阶函数 @
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24# 两层嵌套
import functools
def log(func):
def wrapper(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return wrapper
# 三层嵌套
import functools
def log(text):
def decorator(func):
def wrapper(*args, **kw):
print('%s %s():' % (text, func.__name__))
return func(*args, **kw)
return wrapper
return decorator
def now():
print('2015-3-25') - 偏函数