函数参数终章:
命名关键字形参:在定义函数时,*后定义的的参数称之为关键字参数
def func(x,y,*,a=1,b)
组合用:位置参数-默认形参-可变位置形参-关键字形参-**kwargs
名称空间和作用域:
名称空间:存放名字的地方,对栈区的一种划分
内置名称空间:存放解释器内置的名字,存活周期:随着解释器开启与关闭而存活的
全局名称空间:如果一个名称空间既不是内置也不是局部,那么他就是全局的,存活周期:会随着程序的运行和结束存活的
局部名称空间:函数内的名字,存活周期:随着函数的调用和结束释放存活的
加载顺序:内置——》全局——》局部
销毁顺序:内置《——全局《——局部
查找优先级:在当前所在位置向上逐层查找
当发生函数的嵌套时,不要去管函数何时调用,而是直接去找函数定义位置
作用域:作用范围
全局作用域:1.全局存活,2.全局有效
局部作用域:1.函数结束时就GG 2.函数调用时有效
global:作用是将函数内的变量声明为全局变量
nolocal:函数嵌套时打破上层进行修改
# ===================题目一===================
input=333
def func():
input=444
func()
print(input)
# ===================题目二===================
def func():
print(x)
x=111
func()
# ===================题目三===================
x=1
def func():
print(x)
def foo():
x=222
func()
foo()
# ===================题目四===================
input=111
def f1():
def f2():
# input=333
print(input)
input=222
f2()
f1()
# ===================题目五===================
x=111
def func():
print(x) #
x=222
func()
# ===================题目六===================
x=111
def foo():
print(x,)
def bar():
print(x)
foo()
bar()
# ===================题目七===================
x=1
def func2():
func1()
x=2
def func1():
print(x)
x=3
func2()