python asgi web 框架解读

瘦欲@ 提交于 2020-07-28 03:44:38

Django Restframework 大神: TOM CHRISTIE

http://www.tomchristie.com/

C++ 静态多态

静多态(Static Polymorphism)是多态性的一种。多态性可按照发生的时间段分为静多态和动多态(Dynamic Polymorphism)

Flask 基础知识

自己去看下spring最基础知识

A要用B对象的时候,会去new一个B,
C调用的时候也会去new一个B。
现在在B上面加了个注解,
项目启动的时候去扫描这个带这个注解的B,
然后通过反射去实例化B,放到map容器里,
使用的时候就不用new了,直接把B注入进来

-- 相当于深拷贝么
-- 应该不是,反射的还是同一个对象

Python 元类

def with_metaclass(meta, *bases):
    """Create a base class with a metaclass."""
    # This requires a bit of explanation: the basic idea is to make a
    # dummy metaclass for one level of class instantiation that replaces
    # itself with the actual metaclass.
    class metaclass(type):
        # metacls type 自己,name 是要创建的类的名称, this_bases 是 父类基类, d 是属性。
        def __new__(metacls, name, this_bases, d):
            return meta(name, bases, d)

    return type.__new__(metaclass, "temporary_class", (), {})

【妖怪】青衣(775344409) 10:53:49 第一个是type 自己吧,第十个要创建的 类的名称(name), bases 和attrs 分别是什么意思呢?

【八戒】question mark(1603753920) 10:54:46 bases 是父类

【八戒】question mark(1603753920) 10:54:53 attrs是方法或者属性

Python装饰器理解.

【妖怪】青衣(775344409)  9:52:41
Python 里面的装饰器,能不能 理解成 函数的函数.

【白马】路伴友行(1947435524)  9:59:32
本质是高阶函数

【白马】路伴友行(1947435524)  9:59:53
装饰器 只是语法糖

【沙僧】渐行渐远(1020193131)  10:00:08
🌱青衣🌱  
Python 里面的装饰器,能不能 理解成 函数的函数.
@🌱青衣🌱 可以

【白马】路伴友行(1947435524)  10:00:12
导入时执行的

【白马】路伴友行(1947435524)  10:00:12
导入时执行的
运行时 已经变了
【白马】路伴友行(1947435524)  10:03:54
question mark  
@路伴友行 装饰器不能控制 是否运行吧
@question mark 
不是这个意思

【白马】路伴友行(1947435524)  10:04:14
导入时对装饰器做了预处理

【八戒】question mark(1603753920)  10:04:31
@路伴友行 我想实现一个功能  可以控制装饰器根据条件 是否执行 这个功能行不行

【白马】路伴友行(1947435524)  10:05:06
可以呀

【八戒】question mark(1603753920)  10:05:13
怎么实现

【八戒】question mark(1603753920)  10:05:22
这个装饰器不是我实现的

【白马】路伴友行(1947435524)  10:05:22
带参数的装饰器

【白马】路伴友行(1947435524)  10:05:38
那就在装饰一层


【沙僧】in探索者_北京(1770226120)  10:05:56
没区别 都是func @🌱青衣🌱 
你只需要关注调用方式和参数传递



在 fastapi 中, 或者一个类. endpoint 是一个函数

C:\Users\tim\PycharmProjects\fs\venv\Lib\site-packages\starlette\routing.py
def get_name(endpoint: typing.Callable) -> str:
    if inspect.isfunction(endpoint) or inspect.isclass(endpoint):
        return endpoint.__name__
    return endpoint.__class__.__name__

强制关键字参数.

强制关键字参数是3.1版本引入的新特性,目的是在可变长度的位置参数或关键字参数后增加常规参数(可选填默认值),给其赋值必须强制通过关键字传入。

强制关键字参数不同于关键字参数。

1)下面的参数列表在Python2中不被允许,但现在a是一个强制关键字参数,给a赋值必须强制给出"a=xx"

>>> def foo(*args, a):
...   print(args, a)
foo(1,2,3,4):错误,a未被赋值
foo(1,2,3,4, a=5):正确

>>> def foo(*args, a=5):
...   print(args, a)
foo(1,2,3,4):正确,但a为默认值5

2)引入* 标记

在可变长度的位置参数或是关键字参数后跟常规参数,那么该常规参数就一定是强制关键字参数,但在常规参数后如何跟强制关键字参数呢?

def compare(a, b, *, q1, q2=3):
    ...

* 之后的都是强制关键字参数,上面例子中q1与q2都是强制关键字参数

>>> def foo(a,b,c=3):  # c是关键字参数
...   print(a,b,c)
foo(1,2,4):返回"1 2 4"

>>> def foo(a,b,*,c=3):  # c是强制关键字参数
...   print(a,b,c)

foo(1,2,4):错误,c未被赋值
foo(1,2,c=4):正确,返回"1 2 4"

总之: 强制关键字参数的赋值必须显示通过关键字传入。 当强制关键字参数无默认值时,调用时必须给其赋值,否则报错;当强制关键字参数有默认值时,若调用时不给其显示赋值,其使用默认值。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!