如何在python上注释空列表

如何在python上注释空列表,python,typing,Python,Typing,我不知道通过键入module来注释空数组 有时,我使用列表作为数据容器 就像 box=[] def fuga(盒子): ```框是此函数中已处理数据的容器``` 对于范围(10)内的uu: res=hoge(35;)API响应 框。追加(res) 返回框 到目前为止,我编写了以下代码: 输入导入列表中的 框=[] def fuga(框:列表)->列表[str]: 对于范围(10)内的uu: res:str=hoge 框。追加(res) 返回框 它工作得很好,但我想它不适合通过键入module

我不知道通过键入module来注释空数组

有时,我使用列表作为数据容器

就像

box=[]
def fuga(盒子):
```框是此函数中已处理数据的容器```
对于范围(10)内的uu:
res=hoge(35;)API响应
框。追加(res)
返回框
到目前为止,我编写了以下代码:

输入导入列表中的

框=[]
def fuga(框:列表)->列表[str]:
对于范围(10)内的uu:
res:str=hoge
框。追加(res)
返回框
它工作得很好,但我想它不适合通过键入module进行python编码。这是因为开发人员很难理解变量“box”包含哪些对象。因此,我认为适当的注释是

输入导入列表中的

框=[]
def fuga(框:列表[None])->列表[str]:
对于范围(10)内的uu:
res:str=hoge
框。追加(res)
返回框

收不收?如果是错误的,我想知道如何将空数组对象注释为参数。

首先,不要在方法之外定义列表。。否则,您的方法将对多个调用产生副作用

其次,如果要使用该变量,请不要将其称为
\uu
。按照惯例,该名称用于您永远不会使用的类型

关于实际类型的暗示!如果您创建一个空列表,那么类型推断就不足以猜测它最终将用于什么。这意味着它默认为
List[Any]
。而是明确声明:

def fuga() -> List[str]: 
    box: List[str] = []
    for i in range(10):
        res: str = hoge(i)
        box.append(res)
    return box
在上面的示例中,我从参数中删除了
。如果您确实希望它被传入,那么您应该重命名它。就目前的情况而言,它将影响全局变量,这是一种不好的做法。请尝试以下方法:

box: List[str] = []

def fuga(input_box: List[str]) -> List[str]: 
    for i in range(10):
        res: str = hoge(i)
        input_box.append(res)
    return input_box

你目前不能这样做,我也不认为它会被添加,因为它太难静态检查,因为
list
可以在许多地方通过难以遵循的构造填充(
exec
of passed by user string或changing
locals()
记住)
def fuga(box):返回[hoge(uu)for u范围内(10)]
@prashantrana不使用
\uu
作为您关心的变量的名称。@flakes我刚才经常使用OP notations hanks。根据PEP484,空列表由
list[str]
表示。总的来说,我错过了。