动态参数
-
def eat(*args,**kwargs): #函数定义阶段,*聚合(打包)
print(args) #tuple
print(kwargs) #dict
print(*kwargs) #dict的键
print(*args) #函数体中的* 打散(解包)-
动态位置参数(args只是约定俗成的,其实可以改变)
-
-
-
**kwargs -- 输出的是字典
-
动态位置参数:限制性位置参数,位置参数接受后额外的参数动态位置参数进行接收,获取的是一个元组
-
动态关键字参数:先执行默认参数,默认参数接受后额外的默认参数动态默认参数进行接收
-
实参:字典中的键不能使用数字
函数的注释
-
._doc_ -- 查看注释
-
._name_ -- 查看函数的名字
名称空间
-
内置空间
-
Python解释器自带的空间
-
-
全局空间
-
Py文件中顶格写的就是全局空间
-
-
局部空间
-
函数体中就是局部空间
-
-
加载顺序:内置空间>全局空间>局部空间
-
取值顺序:局部>全局>内置
-
作用域:保护数据的安全性
-
全局作用域:全局+内置
-
局部作用域:局部
-
函数嵌套
-
不管在什么位置,只要是函数名+()就是在调用一个函数
global nonlocal
global
-
修改全局
-
a=100 def func(): global a a=a-50 print(a) print(a) func() print(a) 结果:100 50 50
nonlocal
-
修改局部,修改距离nonlocal最近的一层,如果没有则向上一层查找,只限在局部
-
a=10 def func(): a=5 def foo(): a=3 def f1(): nonlocal a a=a+5 print(a) f1() print(a) foo() print(a) func() print(a)
-