6.1 懒惰是一种美德
6.2 抽象和结构
6.3 自定义函数
# 自定义函数
def fibs(num):
result = [0,1]
for i in range(num - 2):
result.append(result[-2] + result[-1])
return result
print(fibs(10))
print(fibs(5))
6.3.1 给函数编写文档
# 自定义函数
def fibs(num):
'test function des'
result = [0,1]
for i in range(num - 2):
result.append(result[-2] + result[-1])
return result
>>> fibs.__doc__
'test function des'
>>> help(fibs)
Help on function fibs in module __main__:
fibs(num)
test function des
>>>
6.3.2 其实并不是函数的函数
6.4 参数魔法
6.4.1 值从那里来
6.4.2 我能修改参数吗
6.4.3 关键字参数和默认值
# 关键字参数
def hello_1(greeting, name):
print('{},{}!'.format(greeting,name))
hello_1(greeting='Hello', name = 'world')
def hello_3(greeting='Hello', name='world'):
print('{},{}!'.format(greeting,name))
hello_3()
hello_3(name = 'peter')
6.4.4 收集参数
# 收集参数
def print_params_4(x,y,z=3, *pospar, **keypar):
print('x,y,z ', x, y, z)
print('pospar', pospar)
print('keypar', keypar)
print_params_4(1,2,3,5, 6, 7, foo = 1, bar = 2)
x,y,z 1 2 3
pospar (5, 6, 7)
keypar {'foo': 1, 'bar': 2}
>>>
6.4.5 分配参数
与收集参数相反的操作
>>> def add(x, y):
return x + y
>>> params = (1,2)
>>> add(*params)
3
>>>
6.4.6 练习使用参数
6.5 作用域
6.6. 递归
6.6.1 两个经典案例:阶乘和幂
6.6.2 另一个经典案例:二分查找
6.7 小结