函数做参数
map,filter,reduce
lambda
函数第一个单词小写,后面所有单词首字母大写
类的首字母大写
变量用下划线分开
lambda
1 | #!/usr/bin/env python |
回调函数 : 函数作为参数
闭包: 绑定外部变量的函数
- 嵌套结构的函数
- 内部函数用到了外部变量
- 外部函数返回内部函数
1
2
3
4def a(num):
def b(num1):
return num1 * num
return b # 返回了一个绑定了num的函数内部函数不能改变外部变量
可以修改外部list变量的值
用来维护游戏中不同角色的状态
装饰器 把函数作为参数而后返回当前函数
- 当然不返回函数但是在装饰器中使用也是可以的
1
2
3
4
5
6
7
8
9def decorator(f):
return f
def myfun1():
...
decorator(myfunc1())
def myfunc2():
...- 二层嵌套装饰器
- 使用闭包
- 三层嵌套..是的装饰器可以自带参数=.=
[fib(i) for i in range(100)] 这个样子可以生成
next 迭代器 优化
惰性计算
1
2
3
4
5
6
7def fib():
a,b = 0,1
while(True): yield b
a,b = b,a+b
A = fib()
[A.next() for i in range(100)]
send 应用 产生static变量…
send给generator的value会成为当前yield的结果 并且send的返回结果是下一个yield的结果
1
2
3
4
5
6
7def func():
input = []
while True:
a = yield
...
ptr = func.send(...)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15def double_inputs():
while True:
yield x =
yield x * 2
...
gen = double_inputs()
#run up to the first yield gen.next()
10) #goes into 'x' variable gen.send(
20
#run up to the next yield gen.next()
6) #goes into 'x' again gen.send(
12
#run up to the next yield gen.next()
94.3) #goes into 'x' again gen.send(
188.5999999999999itertools
1
2
3
4itertools.permutations([...])
itertools.product([...],[...])
itertools.repeat([...], n)
itertools.chain(a,b,c)