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

    一、什么是闭包函数

    闭:封闭

    包:包裹

    内层函数被外层函数包裹起来,内层函数可以引用外层函数的名字

    闭包函数:

    • 闭包函数必须在函数内部定义
    • 闭包函数可以引用外层函数的名字

    闭包函数的定义

    闭包函数是 函数嵌套,函数对象,名称空间与作用域 结合体

    def func(x):
        x = 100
        # inner是闭包函数
        def inner():
            print(x)
        print(inner, 11)
        return inner
    func(1)
    # res = func(1)
    # print(res)
    # print(func(1))
     
    inner = func(1)
    #inner()
     
     
    <function func.<locals>.inner at 0x000001B67E1C2F78> 11
    <function func.<locals>.inner at 0x000001B67E1C2F78> 11
     
    Process finished with exit code 0
    

    直接传参:

    def func(x):
        return x
     
     
    func(1000)
    

    通过闭包函数传参

    def outer(number):
        def inner():
            print(number)
        return inner
     
     
    func = outer(1000)
    func()
    

    二、闭包函数的应用

    闭包函数的应用是为了装饰器作准备

    需求:爬取某个网站,打印获取数据的长度

    方式一:直接传参

    import requests
    # 方式一:直接传参
    def spider_func(url):
        # 往url地址发送请求,获取响应数据
        response = requests.get(url)  # 必须接受url
        # 状态码: 200
        if response.status_code == 200:
            # 获取当前url地址中所有的文本
            print(len(response.text))
            print(response.text)
     
    url = 'https://www.cnblogs.com/xiaoyuanqujing/'
    spider_func(url)
    

    方式二: 通过闭包函数接受url地址,执行爬取函数

    def spider_outer(url):
        def spider_inner():
            response = requests.get(url)
            if response.status_code == 200:
                print(len(response.text))
        return spider_inner
     
    spider_blog = spider_outer('https://www.cnblogs.com/xiaoyuanqujing/')
    spider_blog()
     
    
  • 相关阅读:
    CSS实例:图片导航块
    导航,头部,CSS基础
    web基础,用html元素制作web页面
    web基础
    timestamp与timedelta,管理信息系统概念与基础
    datetime处理日期和时间
    中文词频统计
    文件方式实现完整的英文词频统计实例
    当你发现任务管理器打不开
    恶搞关机
  • 原文地址:https://www.cnblogs.com/cnhyk/p/11890751.html
Copyright © 2011-2022 走看看