1.动态参数(形参的一种方式),可以接收任意的参数.
1).位置参数的动态传参,写法:*参数名.
接收的参数是tuple类型,不能接受关键字.
def eat(**kwargs): #**关键字参数
print(kwargs)
eat(food = "主食",junk = "火锅",drink = "脉动")
2)关键字参数的动态传参,写法是:**参数名
例如: **kwargs 接受的参数类型是字典,关键字参数必须放在最后面.
无敌传参: def nana(*args,**kwargs):
print(args,kwargs)
nana(1,4,7,a = 10,b = 34,c = 56)
def eat(*fruit): #聚合成元组
print(fruit)
lst = ["香蕉","苹果","大白梨","桃子"]
eat(*lst) #这里的*表示的是把lst打散.
def eat(**kwargs): #把所有的关键字参数聚合成字典.
print(kwargs)
dic = {"a":1,"b":2,"c":3}
eat(**dic) #打散字典,依次传参.
* ** 在形参表示聚合,在实参表示打散.
def read(*args):
print(args)
read(*"你好啊")
print(globals()) 打印全局作用域中的内容,
print(locals())打印局部作用域中的内容.又可以理解为打印当前这个函数局部作用域的内容.
2.作用域的问题
1)globals()获取全局作用域中的内容
2)locals()获取局部作用域的内容
三.函数的嵌套
只要遇见了()就是函数的调用,没有()就不是函数的调用.
a = 10
def func():
global a #这里用的是全局的,在局部作用域空间访问全局作用与
a = 20
print(a)
func()
print(a)
a = 10
def func1():
a = 20
print(a)
def func2():
nonlocal a #调用上一级的变量,且不能是全局
a = 30
print(a)
fun2()
print(a)
func1()
print(a)
global:寻找全局作用域中的内容.
nonlocal:寻找上一级作用域中的内容,且不能是全局.
def func():
print("哈哈哈哈哈")
a = func #函数可以赋值,a和func是一回事了
a()