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()
  • 相关阅读:
    5. support vector machine
    机器学习实战(二)决策树
    机器学习实战(一)kNN
    深度学习笔记(无)VGG14
    深度学习笔记(一)线性分类器(基础知识)
    Eclipse代码风格
    windows安装java环境
    linux matlab2013b 安装教程
    小白Linux入门 五
    机器学习 0
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9168651.html
Copyright © 2011-2022 走看看