1.函数进阶:
函数动态参数:
动态位置参数 *args
动态关键字参数 **kwargs
位置 > 动态位置参数 > 默认(关键字)参数 > 动态关键字参数
2.命名空间
局部命名空间
全局命名空间
内置命名空间
加载顺序:
内置 > 全局 > 局部
取值顺序:
局部 > 全局 > 内置
作用域:
全局作用域:
内置 + 全局
局部作用域:
函数局部
3.函数的嵌套
def f():
print(11)
def f1():
print(22)
def f2():
print(33) **********
f2()
f1()
f()
4.global and nonlocal
global
# print(id(lst))
# def func():
# # a = 15 # 在函数的局部中
# # global se #
# lst[0] = 11
# # print(a) # 使用的是局部
# func()
# print(lst)
# print(id(lst))
# 可变数据类型在函数中可以直接操作,不可变数据类型才需要使用global
nonlocal # a = 10 # def f(): # a = 1 # a = 2 # def f1(): # # a = 4 # a = 2 # def f2(): # # nonlocal a # # a = 2 # print(a) # 2 # f2() # print(a) # 2 # f1() # print(a) # 2 # f() # nonlocal 改变最近的父级变量, 如果上级没有能够改变的就继续向上走,直到最外层函数就停止了.