##定义完函数后,函数是不会自动执行的,需要调用它
##特别注意,调用形式是函数名+() 如果不加括号是得到这个函数对象,不会调用这个函数
##在Python里面函数可以像变量一样传来传去,接受之后,也可以像函数一样去调用
##def func():
## print('这是第一个函数的调用')
##def func1():
## return '这是第二个函数的调用' #返回值 程序中的函数完成一件事后,
#最后调用使用者的结果
# return 是返回的意思,print出来的结果是不能赋值给变量的,
#但是return返回的是可以的,如果不写return,默认返回None
#必备参数 必须要传值,否则报错
#默认参数 不传入就会使用默认值
#不定长参数 传入参数没有指定名称,那么*args会以元组形式存放多余的参数
#传入参数指定了名称,那么**kwargs会以字典形式存放多余的参数
##注意:#调用带有参数的函数时,需要在小括号中传递数据
##如果函数定义了多个参数,那么在调用函数的时候,传递的数据要和定义的参数一一对应。
##def func(x,y=10,*args,**kwargs) ->int:
## print(x)
## print(y)
## print(args)
## print(kwargs)
## return x,y,args
#小区有一个公共设施,你能不能私自修改
##v = 100
##def func():
## global v #声明全局变量
## v += 1 #私自去修改设施可以吗
## print(v) #函数内部可以访问外部变量,但是不能修改
##自己家里面的一个设施,你去使用它没有问题对不对,但是社区里面的人能不能用它
##def func():
## v = 100
## print(v)
##print(v) #函数内部定义的变量,外面不能够访问和使用
##这种确实没办法,你只能用返回值返回出去
##老王家里面有一个电视,有两个儿子去使用
##def func():
## v = 100
## def func1():
## nonlocal v #声明局部变量
## v+=1 #大儿子私自去修改可以吗,和上面社区一样的
## print(v)
## def func2():
## print(v)
## return func1,func2 #内部函数在外部不能直接调用,要return返回函数体
#一个游戏都有等级,初始等级是一级
##def func():
## lv=1 #直接定义在外面就是全局变量,那么这个游戏等级所有人都可以用它了,那就完了
## def add():
## nonlocal lv
## lv+=1
## return lv
## def down():
## nonlocal lv
## lv-=1
## return lv
## return add,down #返回函数体,不加()是因为外面不是调用,
#是我们自己想要调用再调用
##def rec(n): #函数内部自己调用自己
## if n<=1:
## return 1 #必须要有结束条件
## else:
## return n*rec(n-1)
##def func(x):
## return x*100
##
##a = lambda x:x*100
##
li = [3,7,'5','2']
li.sort(key=lambda b:str(b))
# key 可以使用lambda来定义排序前,对每个元素的操作,
#通过这个,我们就可以对这个列表排序了
##var = [1,2,3,4] #列表 集合 字典 本身是可变类型 所以不需要考虑作用域
##def func():
## var.append(5)
## print(var)