python 3.28 第三章 函数嵌套/名称空间//内置名称空间/全局名称空间/局部名称空间/作用域/函数对象/闭包函数。

1 函数嵌套:

  函数内可以调用了其他的函数.

# def max2(x,y):
# if x > y:
# return x
# else:
# return y
#
# def max3(x,y,z):
# res1=max2(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()


2 名称空间,存放名字与值绑定关系的地方,调用时生效。一共分为三类。
2.1内置名称空间,print 解释器自带的名字。什么时候都可以使用
2.2全局名称空间,文件级别,顶头写的函数, if while 都是全局,什么时候都是可以使用的。
2.3 局部名称空间,函数内是局部的,参数也是,
内置名称空间:存放Python解释器自带的名字,在解释器启动时就生效,解释器关闭则失效

全局名称空间:文件级别的名字,在执行文件的时候生效,在文件结束或者在文件执行期间被删除则失效



3加载顺序 名称空间
#加载顺序:内置名称空间-》全局名称空间-》局部名称空间
#查找名字:局部名称空间-》全局名称空间-》内置名称空间
4作用域
#全局作用域:包含的是内置名称空间与全局名称空间的名字,
#特点
#1在任何位置都能够访问的到
#2该范围内的名字会伴随程序整个生命周期

#局部作用域:包含的是局部名称空间的名字
#特点:
#1、只能在函数内使用
#2、调用函数时生效,调用结束失效

5函数对象:
函数在python第一类对象:
5.1 可被引用
def qwe():
print('asdasd')

f=qwe()

print(f)
5.2 可当参数传入

 x=1
def func(a):
print(a)

func(x)

def bar():
print('from bar')

def wrapper(func): #func=bar
func() #bar()

wrapper(bar)


5.3 可以当函数的返回值
X=10
def asd():
if X > 2:
print(X)
else:
return (2)

f=asd()
print(f)

5.4 可以当容器的元素。
def qwe():
    print('asd')

def asd():
print('asdd')
y=[qwe,asd,]

  print(y)
y[0]()
y[1]()

print(y[0](),y[1]())


6 闭包函数
闭指的是定义在函数内部的函数
作用域关系,在函数定义阶段就定义死了,与调用位置无关。
def qwe():
x=2
def asd():
print('thx',x)
def zxc():
print('bnm',x)
return zxc
return asd

qwe()()()










原文地址:https://www.cnblogs.com/seanliang/p/8665764.html