zoukankan      html  css  js  c++  java
  • 闭包函数

    一:大前提:

    闭包函数=名称空间与作用域+函数嵌套+函数对象 核心点:名字的查找关系是以函数定义阶段为准

    二:什么是闭包函数

    "闭"函数指的该函数是内嵌函数 "包"函数指的该函数包含对外层函数作用域名字的引用(不是对全局作用域)

    闭包函数:名称空间与作用域的应用+函数嵌套

    def f1():
        x = 333
        def f2():
            print(x)
        f2()


    x=11111
    def bar():
        x=444444
        f1()

    def foo():
        x=2222
        bar()

    foo()  # x----->333

    闭包函数:函数对象

    打破层级限制

    def f1():
        x = 33333333333333333333
        def f2():
            print('函数f2:',x)
        return f2

    f=f1()
    # print(f)

    # x=4444
    # f()
    def foo():
        x=5555
        f()

    foo()

    传递参数的两种方法:

    # 方式一:直接把函数体需要的参数定义成形参
    # def f2(x):
    #     print(x)
    #
    # f2(1)
    # f2(2)
    # f2(3)

    # 方式二:
    # def f1(x): # x=3
    #     x=3
    #     def f2():
    #         print(x)
    #     return f2
    #
    # x=f1(3)
    # print(x)
    #
    # x()

    应用场景:

    import requets
    # 传参的方案一:
    def get(url):
        response=requests.get(url)
        print(len(response.text))

    get('https://www.baidu.com')
    get('https://www.cnblogs.com/linhaifeng')
    get('https://zhuanlan.zhihu.com/p/109056932')
    方法二:
    def outter(url):
        # url='https://www.baidu.com'
        def get():
            response=requests.get(url)
            print(len(response.text))
        return get

    baidu=outter('https://www.baidu.com')
    baidu()

    cnblogs=outter('https://www.cnblogs.com/linhaifeng')
    cnblogs()

    zhihu=outter('https://zhuanlan.zhihu.com/p/109056932')
    zhihu()

  • 相关阅读:
    通过system调用Am命令执行动作
    windows中如何在命令行启动启动程序
    UICC 实现框架和数据读写
    软件设计方法(转载)
    好诗欣赏——邀请 The Invitation
    leaflet使用turfjs插件,基于格点数据绘制等值线效果
    深信服防火墙做端口映射
    关于本博客的一些声明
    sqlserver – SQL Server – 包含多个字段的IN子句
    JavaScript Array join() 方法
  • 原文地址:https://www.cnblogs.com/bailongcaptain/p/12548453.html
Copyright © 2011-2022 走看看