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

    闭包函数:

    闭:指的是函数定义在一个函数内部的函数

    包:该内部函数包含对外层函数名称的引用

    闭包函数的基本形式:

    def outter():#外层函数包裹内层函数
        x=1#使用函数的作用域的概念
        def inner():#函数的嵌套定义
            print('from inner',x)#函数的名称和作用域
        return inner#可以在全局使用内层函数

    调用方式

    f= outter()#返回inner的内存地址
    f()#通过内存地址调用函数
    f()

    函数两种传值的方式

    方式一:直接通过函数的的参数形式来传值

    def foo(name):
        print('hello %s' %name)
    
    foo('egon')
    foo('egon')
    foo('egon')

    方式二通过闭包方式的方式来传值

    def outter(name):#通过参数传值使得函数局部名称空间获得相关名称
        # name='egon'
        def foo():
            print('hello %s' %name)
        return foo

    实例:

    # 问题
    # def get():
    #     response=requests.get(url)
    #     if response.status_code == 200:
    #         print(response.text)

    解决方案一:

    def get(url):
        response=requests.get(url)
        if response.status_code == 200:
            print(response.text)
    
    get('https://www.baidu.com')#调用方式复杂
    get('https://www.baidu.com')
    get('https://www.baidu.com')

    解决方案二:

    def outter(url):
        # url='https://www.baidu.com'
        def get():
            response=requests.get(url)
            if response.status_code == 200:
                print(response.text)
        return get
    
    baidu=outter('https://www.baidu.com')#定义方式相对复杂
    cnblogs=outter('https://www.cnblogs.com')
    baidu()#重用效率比较高,再次调用方便
    baidu()
    cnblogs()
    cnblogs()
  • 相关阅读:
    tarjan——强连通分量+缩点
    题解报告——Financial Crisis
    计算几何刷题计划(转)
    [bzoj1042] [HAOI2008]硬币购物
    [bzoj1584] [Usaco2009 Mar]Cleaning Up 打扫卫生
    bzoj 2783 JLOI2012 树
    bzoj 1150 [CTSC2007]数据备份Backup
    bzoj 1079 [SCOI2008]着色方案
    bzoj 2957 楼房重建
    bzoj 3208 花神的秒题计划I
  • 原文地址:https://www.cnblogs.com/msj513/p/9707570.html
Copyright © 2011-2022 走看看