一、函数对象
-
函数是第一类对象,即函数可以当作数据传递
#1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #4 可以当作容器类型的元素
-
利用该特性,优雅的取代多分支的if
def foo(): print(‘foo‘) def bar(): print(‘bar‘) dic={ ‘foo‘:foo, ‘bar‘:bar, } while True: choice=input(‘>>: ‘).strip() if choice in dic: dic[choice]()
二、函数嵌套
-
函数的嵌套调用:在函数内又调用了其他函数
def max2(x,y): if x > y: return x else: return y def max3(x,y,z): res1=max(x,y) res2=max2(res1,z) return res2 print(max3(11,199,2))
-
函数的嵌套定义:在函数内又定义其他函数
def f1(): print(‘f1‘) def f2(): print(‘f2‘) def f3(): print(‘f3‘) f3() f2() f1()
三、名称空间与作用域
-
什么是名称空间?
名称空间:存放名字的地方,三种名称空间 x=1 名称空间正是存放名字x与1绑定关系的地方
-
名称空间的加载顺序
python test.py #1、python解释器先启动,因而首先加载的是:内置名称空间 #2、执行test.py文件,然后以文件为基础,加载全局名称空间 #3、在执行文件的过程中如果调用函数,则临时产生局部名称空间