函数的嵌套调用 闭包

时间:2019-11-24
本文章向大家介绍函数的嵌套调用 闭包,主要包括函数的嵌套调用 闭包使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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()

def func():
    print(123)

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

qqxing = wahaha(func)   # 函数名可以作为函数的参数
qqxing()

闭包:嵌套函数,内部函数调用外部函数的变量.

def outer():
    a = 1
    def inner():
        print(a)
    inner()
outer()
def outer():
    a = 1
    def inner():
        print(a)
    return inner
inn = outer()
inn()
# import urllib  #模块
from urllib.request import urlopen
ret = urlopen('http://www.xiaohua100.cn/index.html').read()
print(ret)
def get_url():
    url = 'http://www.xiaohua100.cn/index.html'
    ret = urlopen(url).read()
    print(ret)

get_url()

def get_url():
    url = 'http://www.xiaohua100.cn/index.html'
    def get():
        ret = urlopen(url).read()
        print(ret)
    return get

get_func = get_url()
get_func()

原文地址:https://www.cnblogs.com/rxiaoxi/p/11923872.html