问题标签 [type-annotation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 用于相同的通用函数签名的 Python 类型注释
typing.Callable
接受两个“参数”:参数类型和返回类型。参数类型应该是...
, 用于任意参数,或显式类型列表(例如,[str, str, int]
)。
有没有一种方法可以表示Callable
s 具有完全相同的(尽管是任意的)泛型签名?
例如,假设我想要一个接受函数并返回具有相同签名的函数的函数,如果我事先知道函数签名,我可以这样做:
但是,我预先不知道参数类型,我希望我的组合器具有适当的通用性。我曾希望这会奏效:
但是,解析器(至少在 Python 3.7 中)不喜欢ArgT
放在第一位。Callable[..., RetT]
我能做到最好吗?
python - 带注释的赋值表达式中出现意外的有效语法
显然(至少对我来说令人惊讶),这是 Python 3.6+ 中完全有效的表达式:
这怎么了?我使用模块检查了它ast
并得到以下信息:
好的,这是一个带注释的作业。我查阅了语法参考,发现它对应于这条规则:
这对我来说没有多大意义。如果它是一个带注释的赋值,那么为什么表达式的赋值部分是可选的?如果表达式的赋值部分不存在,这可能意味着什么?这真的不奇怪吗?
该annasign
节点仅在一个规则中引用:
在该级别的其他每个可能的投影中,都需要某种赋值表达式(augassign
是一个类似的标记+=
)。那么为什么它是可选的annassign
呢?
我想这似乎是为了成为裸名称表达式的注释版本(即只是x
),但这真的很令人困惑。我对那里的静态类型检查器不太熟悉,但他们可以使用这样的注释吗?
这很可能是故意的,但这似乎是一个错误。这有点问题,因为可以编写语法上有效但完全无意义的代码,如下所示:
最近,当我将表示形式转换为单独的变量时,我在自己的代码中犯了类似的错误dict
,只有当我的测试管道在 Python 3.5 环境中运行并生成SyntaxError
.
无论如何,我主要只是对意图感到好奇,但也很高兴发现我发现了一个实际的语法错误。
python - Python 3.7 在类型注释上抛出 NameError 但我不想导入定义它的模块
我有以下结构
在 _base.py
现在在 code.py
Python 抛出一个NameError
,Base
但我不想导入它。我没有真正的理由。特别是如果foo()
甚至没有做任何事情,arg
而是将其进一步发送到另一个模块。加载周期导入 ( ) 涵盖了类型检查器if TYPE_CHECKING:
。
为什么 python 会评估类型注释呢?我不明白为什么它必须告诉它是什么Base
。为什么即使完全是胡说八道,它也不完全按照我写的那样将其存储为字符串?保证它是有效表达式而不仅仅是任意表达式的注释的用途是什么
python - 继承类型和成员重载的 Python 类型注释问题
请参阅下面的示例,使用 python 3.7,我找不到正确注释的方法。注释错误显示在注释中,由 mypy 给出。
- 我有一个实现“通用成员”的“通用类”。以及继承该结构的具体类和成员。
- 具体成员可以有其他方法并为构造函数使用不同的参数。
正确注释的方法是什么?
非常感谢。
python - 如何在python中键入注释递归数据结构?
我想创建一个简单的嵌套字典,最终是 str-to-str 映射。作为字典,示例实例可能如下所示:
描述性较差的类型注释可能看起来像Dict[str, Any]
,但我想强制执行一些比Any
我在这棵树中搜索更具体的东西。
python - python - 如何在Python 3中键入迭代类实例或相同类实例的元组的注释函数?
我开始在 Python 3 中使用类型注释进行实验,并且遇到了函数问题exclude_filter
,特别是items
在下面的代码片段中进行了注释(我发布了这个未注释的)。简而言之,我正在尝试遍历列表并根据某些标准过滤掉一些项目。并且列表中项目的类型是类的实例或这些实例的元组,在这种情况下,我只在元组的第一个成员中寻找标准。
我已经尝试过明显错误items: List[BaseItem]
的结果:
所以我试过item: List[Union[BaseItem, Tuple[BaseItem, BaseItem]]]
:
然后我试过了T = TypeVar("T", BaseItem, Tuple[BaseItem, BaseItem])
,但我得到了:items: List[T]
item: T
好吧,我尝试了更晦涩的组合,但似乎没有任何效果。注释此代码的正确方法是什么?
python - 增加 Python 新整数类型的惯用方法是什么?
假设我这样定义了一个新类型:
然后假设我有一个Index
这样的变量:
什么是惯用的增量方式index
?
如果我做
这相当于
那么从静态类型检查的角度来看,类型index
变为int
而不是:Index
有什么比
保持Index
类型?
python - What's the correct type hint for a type hint?
I have a use case for accepting type hints as arguments to a function. But what is the right type hint to to accept a type hint?
#xA;Is there a "TypeHintType" that I can use to annotate that a type hint is expected as an argument?
python - TypeVar('T') 和 Any 之间的区别
假设我有一些通用功能:
如果我想输入提示*args
,根据PEP ,我只需要指定类型一 arg。
如果参数可以是任何类型怎么办?有什么区别:
和
据我所知,TypeVar('T')
等同于“任何类型”,但是当变量 args 具有多种类型时,这是否适用?
python - 具有相同类型属性的类的类型注释?
我有 Node 类,Node 类有 2 个孩子,孩子 A 和 B,但它们是具有相同结构的同一个类,因为孩子可以有自己的孩子。
代码在python中,语言不让我做下一个,标记我一个错误:
有没有办法做到这一点,对象本身嵌套?
致以我的问候