# def eat(a,b,v,f,g):
# print(a,b,v,f,g)
#
# eat('方便面','包子','麻团','豆浆','咸菜')
# def eat(a,b,*args): # 聚合 打包
# print(a,b,args) # 元祖
# # 形参位置 : 位置参数 > 动态位置参数
# eat('方便面','包子','麻团','豆浆','咸菜','油条','火鸡面','小笼包','炒饼')
# def eat(b=1,**kwargs): # b=1 b ='2'
# print(kwargs) # {'a': '1', 'c': '4', 'd': '5', 'f': '22'}
# # print(kwargs['b']) #keyError
# print(b)
# eat(a='1',b='2',c='4',d='5',f='22')
# 动态关键字参数 默认参数 > 动态默认参数
# def func(a,b,*args): # 聚合
# print(a,b,*args) # 打散
#
# func(1,2,3,4,5,6)
# def func(a=1,b=2,**kwargs): # 默认参数** 聚合
# print(a,b,kwargs)
#
# func(a=56,c=22,b=444,d=66)
# def func(a,b,c=1,*args,**kwargs): 错误的示范
# print(a,b,c,args,kwargs)
#
# func(1,2,3,4,5,6,7,8,d=1,f=3)
# def func(a,b,*args,c=1,**kwargs): # 位置 > 动态位置 > 默认参数 > 动态默认参数
# print(a,b,c,args,kwargs)
#
# func(1,2,3,4,5,6,7,8,c=55,d=1,f=3)
# def func(*args,**kwargs): #万能 无敌
# print(args,kwargs)
#
# func(1,2,3,4,a=1,b=2,c=3) # 位置 关键字 混合
# lst =[1,2,3,5,4]
# def func(*args): # 聚合
# print(*args) #打散
# func(*lst) # 打散 去壳
# dic= {'1':22,'2':55}
# def func(**kwargs): #聚合
# print(kwargs)
# func(**dic) #打散 1 = '22' ,'2' = 55
# 函数的注释
# def func(a,**kwargs):
# '''
# :param a: 年龄
# :param kwargs: 万能的默认参数
# :return: 返回值
# '''
# # print(args)
# # print(kwargs)
# # return args
# # print(func.__doc__) #查看函数的注释 函数名.__doc__
# 函数的名称空间
# 内置空间
# 全局空间
# 局部空间
# Python关键字是存在内置空间的
# py文件中顶头写的内容就存在全局空间
# 函数内写的变量存在局部空间
# a = 1
# b = 2
#
# def func():
# print(1)
# a = 10
# def func():
# a = 1 # 局部空间
# print(a)
# func()
#
# def func1():
# print(a) # 局部空间不是共享的
# func1()
# 找值顺序: 局部空间 > 全局空间 > 内置空间
# 加载顺序: 内置空间 > 全局空间 > 局部空间
# 作用域命名空间:
#
# 内置空间 + 全局空间 == 全局 globals()
# 局部空间 locals()
# 函数的嵌套:
# def func():
# print(1)
#
# func()
# func()
#
# def func():
# print(1)
# def func():
# func1()
# print(1)
#
# def func2():
# print(33)
# func()
#
# def func1():
# print(2)
#
# func2()
# def func():
# print(1)
# def func1():
# print(2)
# func3()
# def func2():
# print(5)
# def func3():
# print(4)
# func2() #飘红不代表报错
# func1()
# func()
# def fun1():
# print(1)
# def fun2():
# print(2)
# def fun3():
# print(3)
# def fun6():
# print(6)
# fun3()
# def fun4():
# print(4)
# def fun7():
# print(7)
# fun7()
# def fun5():
# print(5)
# fun5()
# fun4()
# fun6()
# fun2()
# fun1()
# globals()
# locals()
# a = 10
# def func():
# a = 20
# def func1():
# pass
# print(a)
# # print(globals()) #查看全局作用域 内容的
# # print(locals()) # 查看局部作用域 内容的
# func()
# global 全局
# nonlocal
# a = 10 #
# def func():
# global c # 申明我要修改全局的变量a的值
# b = 100
# print(b) #100
# print(locals()) # {} 存放我局部作用域里的一个容器 {'b':100}
# func()
# print(a) #10
# a = 11
# def func():
# def fun1():
# def func2():
# global a
# a =100
# print(a)
# fun1()
# func()
# print(a)
# n = 1
# def func():
# n = 10
# def func2():
# def func1():
# nonlocal n #修改 离得 最近 上一次 里的变量值,
# # 上一次没有就继续往上找,找到全局最外层局部
# n = 100
# print(n) # 10
# func1()
# func2()
# func()
# print(n)
# b = 10
# def func():
# b = 100
# print(b)
# def func1():
# print(b) # 100
# def func2():
# print(b) # 100
# def func3():
# nonlocal b
# b = 5
# print(b) # 5
# func3()
# print(b) # 5
# func2()
# print(b) # 5
# func1()
# print(b) # 5
# func()
# print(b) # 10