python-06 抽象(函数)

# 第六章 抽象
# 6.1 懒惰是一种美德
'''
fibs = [0, 1]
num = int(input("how many Fibonacci numbers do you want? "))
for i in range(num - 2):
fibs.append(fibs[-2] + fibs[-1])
print(fibs)
'''
# 6.2 抽象和结构

# 6.3 自定义函数
# callable() 判断某个对象是否可调用
# def fibs(num):
# '测试'
# result = [0, 1]
# for i in range(num - 2):
# result.append(result[-2] + result[-1])
# return result
#
# print(fibs(20))

# 6.3.1 给函数编写文档
# 函数里面的第一行字符串
# print(fibs.__doc__)
# print(help(fibs))

# 6.3.2 其实不是函数的函数

# 6.4 参数魔法
# 6.4.1 值从哪里来
# 6.4.2 我能修改参数吗?
# 变量修改是局部的,列表是可以修改的
# 1、 为什么要修改参数
# 2、如果参数是可以修改的

# 6.4.3 关键字参数和默认值
# 6.4.4 收集参数 (参数前面有*) (两个* 可以收集关键字) * 元组 **字典
# def print_params_3(**params):
# print(params)
# print_params_3(x = 1, y = 2, z = 3)

def print_params_4(x, y, z=3, *pospar, **keypar):
print(x, y, z)
print(pospar)
print(keypar)
print_params_4(1, 2, 2, a = 2)

# 6.4.5 分配参数 *或** 只能传递元组或者字典
def hello_3(greeting='Hello', name='world'):
print('{}, {}!'.format(greeting, name))
p = {'name': 'Sir robin', 'greeting': 'Well met'}
hello_3(**p)

# 6.4.6 联系使用参数

# 6.5 作用域
x = 1
scope = vars()
scope['x'] = 2
print(x)
print(scope['x'])
# globals 全局变量
def multiplier(factor):
def multipluByFactor(number):
print(number)
print(factor)
return number * factor
return multipluByFactor
double = multiplier(2)
print(double(5))


# 6.6递归
# 6.6.1 两个经典案例:阶乘和幂

# 6.6.2 另一个经典案例:二分查找

'''
map(func, seq[, seq, ...]) 对序列中的所有元素执行函数
filter(func, seq) 返回一个列表,其中包含对其执行函数时结果为真的所有元素
reduce(func, seq[, initial]) 等价于 func(func(func(seq[0], seq[1]), seq[2]), ...)
sum(seq) 返回 seq 中所有元素的和
apply(func[, args[, kwargs]]) 调用函数(还提供要传递给函数的参数)
'''




原文地址:https://www.cnblogs.com/fuyouqiang/p/11844632.html