'''def test(x,y):
print(x)
print(y)
test(2,y=3)
def test(*args):#参数可以是不确定的多个数,接受N个位置参数,转换成元组形式
print(args)
test(1,2,2,3,3,4)
def test(x,*args):#参数可以是不确定的多个数
print(x,args)
test(1,2,2,3,3,4)
def test1(**kwargs):#将N个关键字参数转换成字典的方式
print(kwargs)
test1(name ='aa',age =9,sex ='f')
test1(**{'name':'aaa','age':'12'})
def test1(name,**kwargs):#将N个关键字参数转换成字典的方式
print(name)
print(kwargs)
test1(name ='aa',age='44')
'''
def test1(name,*args,**kwargs):
print(name)
print(args)
print(kwargs)
test1(name ='aa',age='44')
'''
aa
()
{'age': '44'}'''
#递归:1.必须有一个明确的结束条件
# 2.每次进入更深一层递归时,问题规模比上次递归都应有所减少
# 3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)
# 这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,
# 栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
def calc(n):
print(n)
if int(n/2) == 0:
return n
return calc(int(n/2))
calc(10)
#匿名函数:不需要显示的函数
#函数式编程:指数学中的函数,即自变量的映射。也就是说一个函数的值仅决定于函数参数的值,
# 不依赖其他状态。比如sqrt(x)函数计算x的平方根,只要x不变,不论什么时候调用,
# 调用几次,值都是不变的。(不复杂的逻辑运算,输入确定,输出就是确定的。)
#高阶函数:变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数
def add(x,y,f):
return f(x)+f(y)
res =add(3,-6,abs)
print(res)