##函数定义 /调用
#def 关键字 func函数名
##def func():
## print('你好') #print 打印的内容不能赋值给变量
##def func1():
## return'aaa' #return 打印的内容可以赋值给变量
##def func2(x,y): #( )里面可以传参数
## z = x*y
## return z #return表示关键字
#函数参数( )括号里面传参 先传必备 在默认 在不定长参数
##参数有必备参数 默认参数(不传值就自己有一个值) 不定长参数
##必备参数 调用必须传入
## (x,y)
##默认参数(不传值就用自己默认值,传值就改)
##def func(x,y=112):
## print(x)
## print(y)
## return x,y
###不定长参数(有元组\字典) 想传多少数据都可以
####(可传可不传 不传默认为空元组和空字典)
##字典传入时,必须是键值对的形式,且只能最后传入,定义时也只能放在最后面。
##参数传入顺序:必备参数,默认参数,不定长参数
##def func1(x,y=1,*args,**kwargs): #**kwargs 表示接收是键值对形式 不是就args接收
## print(x)
## print(y)
## print(args)
## print(kwargs) #赋值语句会自动变成为键值对 a=110,b=223 {'a': 110, 'b': 223}
#### return x,y,args,kwargs
##
###拆包
## return x,y,args,kwargs
#用一个变量接收
#a= func1(1,2,3,4,6,'a','b','d','f',r=100)
##x,y,z,d =a 元组拆包(几个值对应几个变量)
#函数作用域
##var = 100 #全局变量(定义在文件里面的)
##def func (): #函数内部可以访问外部的变量
## global var ##global声明全局变量(就是得到其他人同意然后去修改)
## var+=10
## print(var) ##定义在函数外面的变量函数里面可以访问的, 但是不能修改
##声明一个全局变量 就可以修改了
##def func():
## var =100 #函数内部定义的变量,外面不能访问和使用
## return var ##直接用return返回出来用变量接收
##def func(): ##局部变量() 在函数里面
## var = 100
## def func1():
## nonlocal var ##nonlocal 声明局部变量(就是跟里面的人说好了)
## var+=1
## print(var)
## def func2():
## print(var)
## return func1 , func2
##
##
##
###闭包(外层函数返回内层函数的函数体( 嵌套函数)
##def func(): #把内层函数返回出去 外面就可以直接使用
## var = 100 #可以在外部修改函数内部的变量值
## def add():
## nonlocal var
## var+=1
## return var
## def down():
## nonlocal var
## var -=1
## return var
## return add, down
##递归函数 (阶乘)
def res (n):
if n<=1:
return 1
else:
## print(f'现在是第{n}圈')
## res(n-1)
return n*res(n-1) ##第二次为四
##匿名函数
g = lambda x:x*100
#g变量 lambda关键词 x参数 x*100条件
#排序
li = [1,2,3,4,'a','c','b','5']
li.sort(key =lambda x :str(x))
add_lambda = lambda x,y:x+y
print(add_lambda(10,20))
add_lambda = lambda x=3,y=6 : x+y
print(add_lambda(20))
print(add_lambda(12,22))
li = [i for i in range(0,100)]
#filter过滤器
##def func(x):
## if x%2==0: # 取偶数
## return x
##f=filter (func,li) #需要转类型 list
##f = filter (lambda x:x%2==0,li) #用匿名函数
# map 统一计算
##def func (x):
## return x*10
##f = map(func ,li)
f = map(lambda x:x*10,li) #使用匿名函数