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

    1.作用域关系在函数定义阶段就已经固定死了,与调用位置无关。

    即在任意位置定义函数,都需要跑到定义函数时寻找作用域关系。

    def f1():
    x=1
    def inner():
    print(x)

    return inner

    func=f1()

    def f2():
    x=111111
    func()

    f2() # 打印结果为1


    2.闭包函数
    闭指的是该函数是一个内部函数
    包指的是该函数对外部作用域(非全局作用域)名字的引用。
    def outter():
    x = 1
    def inner():
    print(x)

    return inner

    f=outter()

    def f2():
    x=1111111
    f()

    f2() # 1


    def f3():
    x=4444444444444
    f()

    f3() # 1

    3.
    为函数体传值的方式一:使用参数的形式
    def inner(x):
    print(x)

    inner(1)
    inner(1)
    inner(1)
    为函数体传值的方式二:包给函数
    '''
    def outter(x):
    # x=1
    def inner():
    print(x)
    return inner

    f=outter(1)
    f()
    '''

    最简单的获取封面内容的函数
    直接通过实参给形参传值
    缺点:每次爬取都要重新赋值,很费事
    import requests

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

    get('https://www.baidu.com')

    get('https://www.python.org')

    4.返回值返回的不仅仅是闭包函数的内存地址,还有外部作用域(不包括函数外部的作用域)名字的引用。

    import requests


    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')
    python=outter('https://www.python.org')


    baidu()
    python()
  • 相关阅读:
    描述一下 JVM 加载 class 文件的原理机制?
    Java 中会存在内存泄漏吗,请简单描述
    关于同步机制的一些见解
    Mybatis 一对一,一对多,多对一,多对多的理解
    关于JavaBean实现Serializable接口的见解
    Python 文件I/O
    Python 模块
    Python 函数
    Python time tzset()方法
    Python time time()方法
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9168651.html
Copyright © 2011-2022 走看看