• day 12 函数


    函数
    函数的定义和调用
    def 函数名(形参):
    函数体
    return 返回值
    调用 函数名(实参)
    站在形参的角度上: 位置参数, *args, 默认参数(陷阱), 关键字参数, **kwargs
    站在实参的角度上: 按照位置传,按照关键字传
    返回值: 没有返回值,返回一个值, 返回多个值
    接受返回值: 没有返回值不接收,返回一个值用一个变量接收,返回多个值用一个变量或对应数目的变量接收
    闭包函数 ---- 在内部函数应用外部函数的变量
    装饰器函数 ---- 装饰器一定是闭包函数
    装饰器作用:在不改变原函数的调用方式的情况下,在这个函数的前后添加新的功能
    完美的符合了一个开发原则: 开放封闭原则
    对扩展是开放的
    对修改是封闭的
    基础的装饰器
    from functools import wraps
    def wrapper(func):
    @wraps(func)
    def inner(*args, **kwargs):
    '''在函数被调用之前添加的代码'''
    ret = func(*args, **kwargs) #func被装饰的函数 在这里被调用
    '''在函数被调用之前添加的代码'''
    return ret
    return inner
    使用 @wrapper
    完美的装饰器
    from functools import wraps
    @wraps(func)
    @wrapper
    def func():
    pass

    func() # 实际执行的是 inner()
    func.__name__ #取得实际此时此内存地址指向的函数名
    带参数的装饰器
    @wrapper ---> @wrapper(argument)
    三层嵌套函数
    def outer(形参):
    def wrapper(func):
    def inner(*args, **kwargs):
    '''在函数被调用之前添加的代码'''
    ret = func(*args, **kwargs) #func被装饰的函数 在这里被调用
    '''在函数被调用之前添加的代码'''
    return ret
    return inner
    return wrapper
    @outer(True)
    def func():
    pass
    多个装饰器装饰一个函数
    俄罗斯套娃
    def wrapper1(func):
    def inner(*args, **kwargs):
    print('before 1')
    ret = func(*args, **kwargs) #func被装饰的函数 在这里被调用
    '''在函数被调用之前添加的代码'''
    return ret
    return inner
    def wrapper2(func):
    def inner(*args, **kwargs):
    print('before 2')
    ret = func(*args, **kwargs) #func被装饰的函数 在这里被调用
    '''在函数被调用之前添加的代码'''
    return ret
    return inner
    水滴石穿步骤
    @wrapper1
    @wrapper2
    def func():
    print('1111')
    迭代器和生成器


    内置函数

    装饰器执行步骤:

    函数归纳

    
    
  • 相关阅读:
    Libgdx 截屏功能
    Tomcat+Spring+Quartz Restart or shutdown error
    JSP 基础知识
    Git 常用命令备忘
    Java 基础知识点
    Android adb 命令的基础知识
    在 Cygwin 环境下使用 linux 命令(2)
    Libgdx Pixmap 的使用
    Android 平台开发一些基础知识
    Cygwin 安装列表
  • 原文地址:https://www.cnblogs.com/77-is-here/p/10488910.html
Copyright © 2020-2023  润新知