#coding=utf-8
"""
进阶 函数 第四节
step1:童鞋们的习题反馈
step2:lambda之再议
1.lambda是一个表达式。
2.它没有名称,存储的也不是代码块,而是表达式。
3.它被用作执行很小的功能,不能在里面使用条件语句。
d = lambda x:x+1 if x>0 else 'error'print d(2) #3print d(3) #4print d(-1)#类似于一个函数,lambda没有return,不可以使用for等语句
f = lambda x,y:x+yprint f(1,2)#冒号前是对应的参数,后是要执行的逻辑,只是简单的逻辑。
t = [1,2,3,4]g = filter(lambda x:x > 3 , t)print g#filter是一个过滤函数,lambda 常用的就是用于过滤的表达式。
step3:函数参数总结
1.位置匹配 func(name)
2.关键字匹配 func(key=value)
3.收集匹配
1.元组收集 func(name,arg1,arg2)
2.字典收集 func(name,key1=value1,key1=value2)
4.参数顺序
step4:接触递归
1.递归是调用自身
2.理解下面的函数
"""
def func(arg1,arg2,arg3):
return arg1,arg2,arg3
print func(1,2,3)
def func1(k1='',k2=None,k3=''):
return k1,k2,k3
print func1(k3=5,k1=4,k2=3)
"""
* kargs 元组
** kwargs 字典
参数位置:
1.先是位置匹配的参数
2.再是关键字匹配的参数
3.收集匹配的元组参数
4.收集匹配的关键字参数
"""
def func2(a,d,b=4,*kargs,**kwargs):
return kargs
print func2(2,3,4,5,6,7,9,[1,2,3,4],{1:2,3:4})
# d = lambda x:x+1 if x > 0 else "error"
# g = lambda x:[(x,i) for i in xrange(0,10)]
# def e(x):
#
return x+1
# t = [1,2,3,4,5]
# g = filter(lambda x:x > 3,t)
# print d(2)
# print d(4)
# print d(5)
# print d(-1)
# print d(-2)
# #print g(10)
# print g
def func1(i):
if i<100:
return i + func1(i+1)
return i
print func1(0)