zoukankan      html  css  js  c++  java
  • 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')
    迭代器和生成器


    内置函数

    装饰器执行步骤:

    函数归纳

    
    
  • 相关阅读:
    VS2010开发C的方法
    Activity.startManagingCursor方法
    application/xwwwformurlencoded、multipart/formdata、text/plain
    TCP三次握手/四次挥手详解
    hdu 2157 How many ways??
    zoj 2475 Benny's Compiler
    zoj 2744 Palindromes
    zoj 2750 Idiomatic Phrases Game
    zoj 2104 Let the Balloon Rise
    flash:学习ActionScript的一些提示
  • 原文地址:https://www.cnblogs.com/77-is-here/p/10488910.html
Copyright © 2011-2022 走看看