zoukankan      html  css  js  c++  java
  • 阅读flask上下文前补充

    阅读flask上下文前补充

    一、 预读源码必要了解的知识点

    在阅读源码之前,源码中会涉及到很多python类的特殊的用法以及类写好的功能组件,所以这里我们做一个补充,以便于接下来源码的阅读

    1554342931492

    01 偏函数

    当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

    from functools import partial
    def func(a1,a2,a3):
        print(a1,a2,a3)
    
    
    new_func1 = partial(func,a1=1,a2=2)
    new_func1(a3=3)
    
    new_func2 = partial(func,1,2)
    new_func2(3)
    
    new_func3 = partial(func,a1=1)
    new_func3(a2=2,a3=3)
    

    注意:partial括号内第一个参数是原函数,其余参数是需要固定的参数

    效果图

    1553002020199

    02 __add__的使用

    如果一个类里面定义了 __add__方法,如果这个类的对象 +另一个对象,会触发这个类的__add__方法,换个说法如果 对象1+对象2 则会触发对象1__add__方法,python在类中有很多类似的方法,对象会在不同情况下出发对应的方法。

    class Foo:
        def __init__(self):
            self.num = 1
        def __add__(self, other):
            if isinstance(other,Foo):
                result = self.num + other.num
            else:
                result = self.num + other
            return result
    
    fo1 = Foo()
    fo2 = Foo()
    v1 = fo1 + fo2
    v2 = fo1 + 4
    print(v1,v2)
    

    效果图:

    1553002690004

    03 chain函数

    1554343018090

    chain函数来自于itertools库,itertools库提供了非常有用的基于迭代对象的函数,而chain函数则是可以串联多个迭代对象来形成一个更大的迭代对象 。

    实例1:

    from itertools import chain
    
    l1 = [1,2,3]
    l2 = [4,5]
    
    new_iter = chain(l1,l2) # 参数必须为可迭代对象
    print(new_iter)
    for i in new_iter:
        print(i)
    

    效果图:

    1553003580254

    实例2:

    from itertools import chain
    
    
    def f1(x):
        return x+1
    
    def f2(x):
        return x+2
    
    def f3(x):
        return x+3
    list_4 = [f1, f2]
    new_iter2 = chain([f3], list_4)
    for i in new_iter2:
        print(i)
    

    效果图:

    1553003696355

    我把月亮戳到天上 天就是我的 我把脚踩入地里 地就是我的 我亲吻你 你就是我的
  • 相关阅读:
    铬族元素
    Linux下安装虚拟环境
    Flask之路由系统
    Flask之CSRF
    【原创】关于Azure Storage Simulator 不能启动的问题
    今天终于搞清楚了正则表达式
    模型权重的保存与加载 回调函数的使用
    卷积神经网络结构
    滑动窗口与R-CNN
    模型权重记录与恢复
  • 原文地址:https://www.cnblogs.com/zhulipeng-1998/p/12863797.html
Copyright © 2011-2022 走看看