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()
  • 相关阅读:
    【Selenium】Option加载用户配置,Chrom命令行参数
    Webdriver中关于driver.navigate().to()和driver.get()使用的区别
    【Selenium】idea导入eclisp项目的问题
    【数据库】数据库操作
    【monkey】
    【idea】idea快捷键
    【Selenium】Selenium1
    【Selenium】idea的selenium环境配置
    前端学习
    CSS 居中
  • 原文地址:https://www.cnblogs.com/msj513/p/9707570.html
Copyright © 2011-2022 走看看