# 1. 动态参数
# 位置参数的动态参数: *args
#
# def gan(shouqianng,zujiqiang,*bujiqiang,beijing="4倍"): # *asrg表示位置参数的动态参数
# print("韦神用手枪%s,阻击枪%s,步枪%s,装上%s"% (shouqianng,zujiqiang,bujiqiang,beijing))
# gan("p92","AWM","m4","scal","m16",beijing="8倍")
# def sum(*num):
# s=0
# for i in num:
# s+=i
# print(s)
# sum(2,4)
# 关键字参数的动态参数 : **kwargs
# 顺序:
# 位置,*args,默认值,**kwargs
# 在形参上*聚合, **聚合
# 在实参上*打散, **打散
# def func(*args,**gan):
# return gan
# print(func(m4="垃圾",scal="还行",m16="牛逼",AWM="更牛逼"))
# lst=["大秧歌","马化腾","小花生","毛尖"]
#
# def fn(*foods):
# print(foods)
# fn(*lst)
# def gan(name,*args,sex="男",**kwargs): *args输出的是tuple类型
# print(name,args,sex,kwargs) **kwargs输出的是字典类型
# gan("张","敏","聪",sex="女",hobby="女",edc="本科",xuewei="计算机")
# 2.命名空间:
# 内置命名空间:内部运行的变量函数
# 全局命名空间:python文件内命名的变量,函数
# 局域命名空间:函数内命名的变量和函数
# 作用域:
# 1.全局作用域:内置+全局
# 2.局部作用域:局部
# globals() 查看全局作用域中的名字
# locals() 查看当前作用域中的名字
# 3.global和nonlocal
# global: 把全局变量拿到局部来用.
# nonlocal: 把离他最近的一层的变量拿过来.不会找全局