码迷,mamicode.com
首页 > 编程语言 > 详细

Python_函数的镶嵌和作用域链_26

时间:2019-04-06 09:21:28      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:地址   一个   python   div   数据   ret   无效   bsp   outer   

def max(a,b):
    return a if a>b else b

def the_max(x,y,z):  #函数的嵌套调用
    c = max(x,y)
    return max(c,z)

print(the_max(1,2,3))

#函数的嵌套定义
#内部函数可以使用外部函数的变量
a = 1
def outer():
    a = 1
    def inner():
        a = 2
        def inner2():
            nonlocal a  #声明了一个上面第一层局部变量
            a += 1   #不可变数据类型的修改
        inner2()
        print(##a## : , a)
    inner()
    print(**a** : ,a)

outer()
print(全局 :,a)

#nonlocal 只能用于局部变量 找上层中离当前函数最近一层的局部变量
#声明了nonlocal的内部函数的变量修改会影响到 离当前函数最近一层的局部变量
# 对全局无效
# 对局部 也只是对 最近的 一层 有影响
a = 0
def outer():
    a = 1
    def inner():
        a = 2
        def inner2():
            nonlocal a
            print(a)
        inner2()
    inner()

outer()

def func():
    print(123)
func()  #函数名就是内存地址

func2 = func  #函数名可以赋值
func2()

l = [func,func2] #函数名可以作为容器类型的元素
print(l)
for i in l:
    i()   # 分别执行 func() func2() 函数

def func():
    print(123)

def wahaha(f):  # 传入 func
    f()
    return f           #函数名可以作为函数的返回值

qqxing = wahaha(func)   # 函数名可以作为函数的参数
qqxing() # 相当于在执行func() 函数

 

Python_函数的镶嵌和作用域链_26

标签:地址   一个   python   div   数据   ret   无效   bsp   outer   

原文地址:https://www.cnblogs.com/LXL616/p/10660693.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!