我试图找出如何正确的功能注释或类型提示字符串列表。例如,如果我有一个这样的函数:
def send_email(self, from_address: str, to_addresses: list[str]):
pass
to_addresses应该是一个字符串列表。但是当我尝试使用这个注释时,我在Python 3.4.3解释器中得到了以下错误:
类型对象不可下标
我肯定是list[str]
导致了问题,因为如果我将其更改为str
,错误就会消失,但这并不能正确反映我对参数的意图。
此语法现在在Python 3.9中有效:
在类型注释中,您现在可以使用内置集合类型,例如list
和dict
作为泛型类型,而不是从键入中导入相应的大写类型(例如
list
或dict
)。
但是,在3.9之前,您需要使用导入的
列表
,或者在Python3.7中可以添加
from __future__ import annotations
在文件的顶部,它允许使用
list[int]
(例如)。
在Python 3.9中,可以在类型注释中使用list
(小写为l
),您的代码应该按原样工作。在旧版本的Python中,您需要导入类型。列出
并改用它
from typing import List
to_addresses: List[str]
注意大写L
。
你可能想考虑一些更具体的事情。为什么from_address
astr
,而to_address
是一个列表[str]
?也许是
import typing
Address = typing.NewType("Address")
会有帮助的。
Python 3.4没有为其函数注释指定格式,它只是提供了一种机制,允许您使用任何表达式作为注释。如何解释注释取决于您和您使用的库。
Python 3.5标准化了函数注释用于类型提示的方式,如PEP 484中所述。要注释字符串列表,请使用List[str]
,其中List
是从typing
模块导入的。如果您的函数接受任何类似列表的序列,您也可以使用Sequence[str]
,或者Iterable[str]
用于任何迭代。
从Python3.9开始,您可以使用list[str]
作为类型注释,而不需要导入任何内容。
问题内容: 我正在搜索页面,您可以在其中输入搜索查询并将表单提交到。什么PHP函数是最好的,我应该使用它对搜索查询进行编码/解码? 问题答案: 对于URI查询,请使用;对于其他任何事情,请使用/。 和之间的区别是 根据 application/x-www-form-urlencoded编码(空格用编码),而 根据简单的 Percent-Encoding编码 (空格使用编码)。
问题内容: 在Python中创建按字母顺序排序的列表的最佳方法是什么? 问题答案: 基本答案: 这会修改你的原始列表(即就地排序)。要获得列表的排序副本,而无需更改原始副本,请使用以下函数: 但是,上面的示例有些天真,因为它们没有考虑区域设置,而是执行区分大小写的排序。你可以利用可选参数key指定自定义排序顺序(使用,则是不推荐使用的解决方案,因为它必须多次评估- key每个元素仅计算一次)。 因
问题内容: 我对使用Spring将对象注入到类中有疑问。我在项目中使用了以下代码: 然后通常在以下方法上使用它: 否则,我在Spring示例中发现了注入构造函数的情况: 所以两者都正确吗?还是每个都有其属性和用法? 问题答案: tl; dr-构造函数注入是执行DI的最佳方法 后者是正确的,并不是因为Spring或任何依赖注入容器,而是面向对象的类设计原则。 细节 应该设计一种类型,以便您只能根据其
问题内容: 我知道这听起来微不足道,但是我没有意识到 的功能很奇怪。我有一个实际上是字符串形式的“数字”列表,因此我先将它们转换为整数,然后尝试进行排序。 给我: 我想要的是 我四处寻找与排序数字集相关的算法,但是我发现所有算法都涉及对字母数字集进行排序。 我知道这可能是个没有脑子的问题,但是google和我的教科书没有提供比该.sort()功能有用的功能。 问题答案: 您实际上尚未将字符串转换为
在过去,我使用Spring的XML配置连接bean,在这种情况下,我可以这样做(假设bean有属性的公共setter): 当使用基于注释的配置时,是否存在类似的情况?
问题内容: 我正在尝试对包含数字的字符串列表进行排序 但是列表是排序而不是列表 问题答案: 您要基于值(而不是字符串值)进行排序,因此请尝试: