一:函数嵌套,在调用一个函数的过程中,又调用了其他函数
def bar(): print(‘from bar‘)def foo(): print(‘from foo‘) bar()foo()通过函数的嵌套使用,分解成最小的操作,一次调用 二:函数的嵌套定义:在一个函数的内部,又定义了一个函数
def f1(): x = 1 def f2(): print(‘from f2‘) f2()f1() 三:名称空间,存放名字的地方,准确的说名称空间是存放名字与变量值绑定关系的地方内置名称空间:python自带的名字,在python解释器启动时产生,存放一些python内置的名字全局名称空间:在执行文件时,存放文件级别定义的名字局部名称空间:在执行文件的过程中,如果调用了函数,则会产生该函数的名称空间,用来存放该函数内定义的名字,该名字在函数调用时生效,调用结束后失效加载顺序:内置名称空间------>全局名称空间----->局部名称空间名字的查找顺序:局部名称空间------>全局名称空间----->内置名称空间 四:作用域,作用的范围全局作用域:全局存活,全局有效局部作用域:局部存活,局部有效
def f1(): x = 1 y = 2 print(locals()) print(globals())f1()print(locals())print(globals())print(locals() is globals())改全局名称:
x = 1def f1(): global x x = 2f1()print(x) 改局部名称:
x = 0 def f1(): x = 1 def f2(): x = 2 def f3(): nonlocal x#改的是函数正上方的值 x = 3 f3() f2()f1() 五:优先掌握,在函数定义时就已经固定,与调用位置无关
x = 1def f1(): def f2(): print(x) return f2func = f1()func()
时间: 2024-10-07 05:38:24