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
  • 相关阅读:
    图解Go里面的互斥锁mutex了解编程语言核心实现源码
    day04 NTFS安全权限 | 文件共享服务器
    day03 用户与组管理 | 远程管理
    关于VMware的一些资源|IOS|序列号
    day03 批处理
    day02-IP地址详解
    test1
    simulink产生周期矩形波和8421码
    矩阵连乘问题的算法复杂度的计算--卡塔兰数(Catalan数)的数学推导和近似公式
    找出"吸血鬼数"(Java)
  • 原文地址:https://www.cnblogs.com/ruoxiruoxi/p/9502211.html
Copyright © 2011-2022 走看看