繁体   English   中英

如何使用…as…样式上下文管理器键入提示产生的变量?

[英]How to type hint yielded variable in with…as… style context manager?

考虑一个示例JSON文件:

[
    {"name": "alex"},
    {"name": "roger"},
    {"name": "lily"},
    {"name": "billy"}
]

可以很容易地从磁盘与之交互,如下所示:

import os
import json
from contextlib import contextmanager

@contextmanager
def documentDB(file_name):
    with open(file_name, mode='rt') as fp:
        cur = json.load(fp)
    yield cur
    with open(file_name, mode='wt') as fp:
        json.dump(cur, fp)
    return

# following code works nicely
with documentDB("sample.json") as dbCur:
    print(dbCur)

但是,如何断言/暗示以上代码中的dbCur应该是dict对象列表? 我尝试了这个:

from typing import List

# does not work
with documentDB("sample.json") as dbCur: List[dict]:
    print(dbCur)

但我收到语法错误。

取决于您要实现的目标,但是如果类型提示是针对IDE的,那么大多数人将理解以下内容作为dbCur的类型提示:

from typing import List

with documentDB("sample.json") as dbCur:  # type: List[dict]
    print(dbCur)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM