作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Werkzeug v0.11我研究了Werkzeug的源代码,文件wsgi.py中的类ClosingIterator,通过函数implements_iterator进行装饰:
wsgi.py
@implements_iterator
class ClosingIterator(object):
"""The WSGI specification requires that all middlewares and gateways
respect the `close` callback of an iterator. Because it is useful to add
another close action to a returned iterator and adding a custom iterator
is a boring task this class can be used for that::
return ClosingIterator(app(environ, start_response), [cleanup_session,
cleanup_locals])
If there is just one close function it can be passed instead of the list.
A closing iterator is not needed if the application uses response objects
and finishes the processing if the response is started::
try:
return response(environ, start_response)
finally:
cleanup_session()
cleanup_locals()
"""
我在文件_compat.py中找到了implements_iterator的定义:
implements_iterator = _identity
_identity = lambda x: x
问题是:Implements_iterator 的作用是什么?
最佳答案
Werkzeug 同时针对 Python 2 和 Python 3。如果在 compat.py
中向上滚动,您可以看到 implements_iterator
是为 Python 2 定义的,如下所示:
def implements_iterator(cls):
cls.next = cls.__next__
del cls.__next__
return cls
这允许类实现 __next__
方法(在 Python 2 中仅称为 next
)并且无需任何修改即可适用于 Python 2 和 3。
关于python - 装饰器 "implements_iterator"的功能是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46376804/
Werkzeug v0.11我研究了Werkzeug的源代码,文件wsgi.py中的类ClosingIterator,通过函数implements_iterator进行装饰: wsgi.py @imp
我是一名优秀的程序员,十分优秀!