zoukankan      html  css  js  c++  java
  • 函数的嵌套调用 闭包

    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()
  • 相关阅读:
    linux故障分析简介
    egon说一切皆对象--------面向对象进阶紫禁之巅
    alex说:一切皆bytes
    数据类型小结
    继续死磕python
    python初步学习
    初识python
    3.17内存,进程,rpm和yum,python编译安装
    用户权限(3.15)
    操作系统和基础网络知识
  • 原文地址:https://www.cnblogs.com/rxiaoxi/p/11923872.html
Copyright © 2011-2022 走看看