函数的嵌套及名称空间 作用域

六.函数的嵌套
1.在函数内又调用了其他函数
def max2(x,y):  #两个值比较
    if x > y:
        return x
    else:
        return y
res=(max2(1,3)
print(res)

def max3(x,y,z):   #三个值比较
    res1=max2(x,y)
    res2=max2(res1,z)
    return res2
print(max3(11,99,2))

2.函数的嵌套定义:在函数内又定义了其他函数
def func1():
    print('from func1')
    def func2():
        print('from func2')
        print(func2)  #打印函数的内存地址
    func2()  #调用函数
func1()        


3.函数的层级嵌套 
def f1():  
    print('f1')  #第一层结果
    def f2():
        print('f2')  #第二层结果
        def f3():
            print('f3')  #第三层结果
        f3()  #第三层调用
    f2()  #第二层调用
f1()  #第一层调用


七.函数的名称空间与作用域
1.名称空间:namespaces:存放名字与值的绑定关系的地方
2.名称空间分三类:
2.1 内置的名称空间:存放Python解释器自带的名字,在解释器启动时就生效 解释器关闭则失效
print int  都是Python内置的名称空间

2.2 全局名称空间:文件级别的名字,在执行文件的时候生效,在文件结束或者文件执行期间被删除失效
x=1  #全局变量 什么地方能引用
def f1():
    def f2():
        print(x)
    f2()
f1()

2.3 局部名称空间:存放函数内定义的名字(函数的参数以及函数内的名字都存放与局部名称空间)
函数调用时临时生效,函数结束则失效
def f1():
    x=2  #局部变量
    print(x)
f1()

猜你喜欢

转载自www.cnblogs.com/zhangcaiwang1/p/9694592.html
今日推荐