• python学习:函数---函数名的运用、闭包


    一、函数名的运用

    1、函数名可以赋值给其它变量

    def func():
        print("我是一个函数")
    
    a = func  # 把函数名当成一个变量赋值给另一个变量
    a() # 等同于func()

    2、函数名可以作为容器类的元素

    def func1():
        print("我是函数——1")
    
    def func2():
        print("我是函数——2")
    
    def func3():
        print("我是函数——3")
    
    list_1 = [func1, func2, func3] # 把函数名当做列表的元素
    for i in list_1:
        i() # 等同于func1()、func2()、func3()
        
    # 运行结果:
      我是函数——1
      我是函数——2
      我是函数——3

    3、函数名可以当做其它函数的参数

    def func1():
        print("我是函数——1")
    
    def func2(f):
        f()
        print("我是函数——2")
    
    func2(func1)
    
    # 运行结果:
      我是函数——1
      我是函数——2

    4、函数名可以作为返回值

    二、闭包

    1、什么是闭包

    内部函数包含对外部作用域而非全局作用域名字的引用,则这个内部函数就叫做闭包。

    如果一个内部函数是一个闭包,那么这个闭包引用的外部函数的变量会一直存在内存中,不会随着函数的结束而消失。

    def func():
        name = '闭包'
        def inner():
            print(name)

    2、判断闭包函数的方法:__closure__

    # #输出的__closure__有cell元素 :是闭包函数
    def outer():
        name = "wahaha"
        def inner():
            print(name)
        print(inner.__closure__)
        return inner
    
    f = outer()
    f()
    
    # 输出的__closure__无cell元素 :不是闭包函数
    def outer():
        name = "wahaha"
        def inner():
            print("KFC")
        print(inner.__closure__)
        return inner
    
    f = outer()
    f()
    
    #输出的__closure__无cell元素 :不是闭包函数
    name = "wahaha"
    def outer():
        def inner():
            print(name)
        print(inner.__closure__)
        return inner
    
    f = outer()
    f()

    3、闭包最常用的方式

    def outer():
        age = 18
        def inner():
            print(age)
        return inner
    
    f = outer()
    f()

    4、闭包示例

    def wrapper():
        money = 1000
        def func():
            name = 'eva'
            def inner():
                print(name,money)
            return inner
        return func
    
    f = wrapper()
    i = f()
    i()
    from urllib.request import urlopen
    
    def get_url(url):
        def get_source():
            content = urlopen(url).read()
            return content
        return get_source
    
    url = "https://www.runoob.com/python3/python3-string.html"
    f = get_url(url)
    content = f()
    print(content)
  • 相关阅读:
    Android实战技巧之六:PreferenceActivity使用详解
    Gradle for Android 第三篇( 依赖管理 )
    From 虚拟机模板 创建单节点K8S1.14.1的操作步骤
    Android实例剖析笔记(二)
    Android实例剖析笔记(一)
    Android 传感器
    Eclipse:引用一个项目作为类库(图文教程)
    Android Studio导入Project的方法
    Android Studio导入GitHub上的项目常见问题(有例子)
    AndroidStudio导入项目常见问题
  • 原文地址:https://www.cnblogs.com/Ryan-Fei/p/12119998.html
Copyright © 2020-2023  润新知