实战blog-day5 web框架

9 篇文章 0 订阅

实战blog- day5 web框架

标签(空格分隔): 笔记 web


1、 装饰器
如何写一个装饰器?
怎样使用?

2、RequestHandler()
RequestHandler是一个类,由于定义了call()方法,因此可以将其实例视为函数。
RequestHandler目的就是从URL函数中分析其需要接收的参数,从request中获取必要的参数,调用URL函数,然后把结果转换为web.Response对象,这样,就完全符合aiohttp框架的要求:

3、call()等魔法方法 & callable

4、 dir()
dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法dir(),该方法将被调用。如果参数不包含dir(),该方法将最大限度地收集参数信息。

5、getattr() 函数
getattr() 函数用于返回一个对象属性值。

>>>class A(object):
...     bar = 1
... 
>>> a = A()
>>> getattr(a, 'bar')        # 获取属性 bar 值
1
>>> getattr(a, 'bar2')       # 属性 bar2 不存在,触发异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'bar2'
>>> getattr(a, 'bar2', 3)    # 属性 bar2 不存在,但设置了默认值
3
>>>

6、返回函数名的函数

# app.py
async def logger_factory(app, handler):
    async def logger(request):
        logging.info('Request: %s %s' % (request.method, request.path))
        # await asyncio.sleep(0.3)
        return (await handler(request))
    return logger

首先在logger_factory中传入参数(app, handler),然后返回logger,继而寻找logger定义,传入参数request,执行logging.info,并返回(await handler(request))
返回函数的函数就是依次调用的过程。

7、import inspect

https://blog.csdn.net/weixin_35955795/article/details/53053762

8、get & post 装饰器

def get(path):
    """
    Define decorator @get('/path')
    """
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kw):
            return func(*args, **kw)
        wrapper.__method__='GET'
        wrapper.__route__=path
        return wrapper
    return decorator

其中的@functools.wraps()是什么作用,wrapper.__xxxx___又是什么作用。
@functoos.wraps()是一个装饰器,将原本函数的默认属性比如__name__重新设为原函数属性。
wrapper.__method__ 给函数func添加一个额外属性。

如果没有@functools.wraps(),被装饰函数func只是__name__属性变为wrapper,实际调用还是使用func的函数名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值