函数进阶

函数的动态参数

位置参数 动态传参
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 表示在局部作用域中,调用父级命名空间中的变量
posted @ 2018-08-10 16:19  oecig  阅读(78)  评论(0)    收藏  举报