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')
    迭代器和生成器


    内置函数

    装饰器执行步骤:

    函数归纳

    
    
  • 相关阅读:
    Http接口安全设计
    RTMP服务器搭建(nginx+rtmp)
    OSI七层协议详解
    TCP协议的3次握手与4次挥手过程【深度详解】
    new和delete的深层次剖析(C++)
    大小端模式详解
    MP4文件格式分析及分割实现(附源码)
    使用HBuilder将H5的项目打包成手机可安装的webapp程序(.apk)
    Centos7 解决odoo10打印条形码显示方框乱码的问题
    linux 中运行Django项目
  • 原文地址:https://www.cnblogs.com/77-is-here/p/10488910.html
Copyright © 2011-2022 走看看