zoukankan      html  css  js  c++  java
  • 函数

    一:函数名的作用(函数名的命名规则跟变量一样)

    1,作为函数的地址

    def func():
        pass
    print(func)
    View Code

    2,作为变量

    def func():
        print(123)
    f=func
    f1=f
    f2=f1
    f2()
    View Code

    3,作为函数的参数

    def func():
        print(23)
    def func1(f):
        f()
    func1(func)
    View Code

    4,作为函数的返回值

    def func():
        def inner():
            print(123)
        return inner
    View Code

    5,作为容器的元素

    def func1():
        pass
    def func2():    
        pass
    def func3():
        pass
    a=[func1,func2,func3]
    View Code

    函数名是第一类对象。

    二,闭包函数

    内部函数对外部函数的的变量(非全局变量)的引用,并返回,就会形成递归。一般函数会在调用的时候在内存中产生一个空间,该空间会随函数的结束而消失;在递归函数中,该空间不会随函数的结束而消失。能够节省空间。

    def func(a):
        def inner():
            print(a)
        return inner
    a=3
    f=func(a)
    f()
    View Code

    globals()  返回全局变量的字典

    locals()返回当前位置 局部变量的字典

    def func():
        def  inner():
            a=3
            print(globals())
            print(locals())
        inner()
        return inner
    print(globals())
    print(locals())
    func()
    View Code

    在全局空间,字典内容相同,在局部空间,字典内容不同。
    如何判断闭包函数     f.__closure__

    def func(a):
        def inner():
            print(inner.__closure__)
            return a
        return inner
    View Code

    闭包的应用
    装饰器,爬虫

    import requests
    def func(url):
        def inner():
            ret=requests.get(url)
            return ret.text
        return inner
    url="http://www.baidu.com"
    f=func(url)
    f1=f()
    print(f1)
    View Code
  • 相关阅读:
    【java】java 中 byte[]、File、InputStream 互相转换
    【java】java base64编码与解码
    git初级使用教程
    git学习五:eclipse使用git下载项目
    git学习四:eclipse使用git提交项目
    mybatis连接mysql数据库插入中文乱码
    SpringMVC加载配置Properties文件的几种方式
    zip 压缩文件夹
    java IOUtils下载图片
    spring工具类获取bean
  • 原文地址:https://www.cnblogs.com/ruoxiruoxi/p/9502211.html
Copyright © 2011-2022 走看看