函数的动态参数
位置参数 动态传参
def chi(*food):
print('我要吃',food)
chi('米饭','面条') #多个参数传递进去,收到的内容是元组
动态参数必须在位置参】数的后面
def chi(*food,a,b):
print('我要吃',a,b,food)
chi('米饭','面条',a='黄瓜',b='茄子') #必须用关键字参数来指定
顺序:位置参数,动态参数*,默认值参数
#关键字参数 动态传参
在python中用**来接收动态关键字参数
def func(**kwargs):
print(kwargs)
func(a=1, b=2, c=3)
func(a=1, b=2)
结果:
{'a':1,'b':2,'c':3}
{'a':1,'b':2}
最终顺序:
位置参数 -- *args -- 默认值参数 --**kwargs
形参 聚合
def func(*food): #聚合,位置参数
print(food)
L= ['鸡蛋','煎饼果子','猪蹄','苹果']
#实参:打散
func(*L) #打散
聚合成关键字参数
def func(**kwargs):
print(kwargs)
dic = {'name':'sss','age':'18'}
func(**dic) *打散成 关键字参数
命名空间
a = 10
def fn():
b = 20
print(a)
def gn():
print(a)
fn()
gn()
加载顺序:内置命名空间--全局命名空间--局部命名空间(函数被执行的时候)
取值顺序:局部命名空间--全局命名空间--内置命名空间
global
a = 100
def func():
global a #global表示不在局部创建这个变量了,直接使用全局的a
a = 28
print(a)
func()
print(a)
nonlocal 表示在局部作用域中,调用父级命名空间中的变量