关键字: 可变参数 装饰函数 继承
关键字参数 - kwargs - 字典 - 根据参数名来决定如何执行
可变参数 - args -元组
命名关键字参数
decorator - 装饰器/包装器
高阶函数 - f(g(x))
高内聚 低耦合
high cohesion low coupling
def foo(a,b,c,name,age):
print(a +b + c)
print(name , ':' , age)
def say_hello(**kwargs):
if 'name' in kwargs:
print('你好,%s'%kwargs['name'])
elif 'age' in kwargs:
age = kwargs['age']
if age <= 16:
print('你还是个小屁孩!')
else:
print('你长大了~')
else:
print('请提供个人信息。')
def my_sum(*args):
total = 0
for val in args:
total += val
return total
def main():
say_hello(say = 'hello',name ='xl', age = 20)
param = {
'name':'yqx','age':'16'}
say_hello(**param)
a = [1, 2, 3]
print(my_sum(*a))
foo(1,2,3,'xl',38)
foo(1,2,3,name= 'xl',age=18)
if __name__ == '__main__':
main()
小结:可变参数,如果一个函数定义中的最后一个形参有 ** (双星号)前缀,所有正常形参之外的其他的关键字参数都将被放置在一个字典中传递给函数.(具体见上例)
通过向函数中传入函数 可以写出更通用的代码
calc函数中的第二个参数是另一个函数 它代表了一个二元运算
这样calc函数就不需要根跟某一种特定的二元运算耦合在一起
所以calc函数变得通用性更强 可以由传入的第二个参数来决定做什么
def calc(my_list,op):
total = my_list[0]
for index in range(1, len(my_list)):
t