Python 为函数参数注释两个精确的字符串
Python Annotate Two Exact Strings for Function Parameter
假设我有一个函数 foo
,它接受一个参数 a
。我想注释该函数以指示 a
应该只接受 2 个字符串 - 'string1'
和 'string2'
我目前拥有的是(python<3.10):
from typing import Union
def foo(a: Union['string1', 'string2']):
pass
此外,有没有办法表明函数 return 是 2 组 2 种数据类型的元组?
即 foo
将 return 一个包含 2 个字符串和 2 个整数的元组,每次都在完全相同的位置
from typing import Tuple
def foo() -> Tuple[int, str, int, str]:
return 1, 's1', 2, 's2'
我不想使用 Tuple[int, str]
因为订单应该被注释
您的第一个问题(旁注:请不要将两个单独的问题合二为一,这样更难回答和搜索)是关于 Literal
type。会是
import sys
if sys.version_info < (3, 8):
from typing_extensions import Literal
else:
from typing import Literal
def foo(a: Literal['string1', 'string2']) -> None:
pass
你的第二个问题有点奇怪,因为你显示的代码正是你需要的。 Tuple
接受任意数量的类型参数(包括 ()
以指定空元组)。 Tuple[int, str, int]
是一个元组,由 3 个类型为 int
、str
、int
的元素按此特定顺序组成。特殊情况:Tuple[int, ...]
(注意文字省略号 - 它是语法的一部分)表示仅包含 int
的任意长度的元组。包含任意数量的 int
或 str
的元组将是 Tuple[Union[str, int], ...]
。 Fixed-length 元组(没有省略号)可以包含任何类型。您可以在 docs.
中阅读更多内容
假设我有一个函数 foo
,它接受一个参数 a
。我想注释该函数以指示 a
应该只接受 2 个字符串 - 'string1'
和 'string2'
我目前拥有的是(python<3.10):
from typing import Union
def foo(a: Union['string1', 'string2']):
pass
此外,有没有办法表明函数 return 是 2 组 2 种数据类型的元组?
即 foo
将 return 一个包含 2 个字符串和 2 个整数的元组,每次都在完全相同的位置
from typing import Tuple
def foo() -> Tuple[int, str, int, str]:
return 1, 's1', 2, 's2'
我不想使用 Tuple[int, str]
因为订单应该被注释
您的第一个问题(旁注:请不要将两个单独的问题合二为一,这样更难回答和搜索)是关于 Literal
type。会是
import sys
if sys.version_info < (3, 8):
from typing_extensions import Literal
else:
from typing import Literal
def foo(a: Literal['string1', 'string2']) -> None:
pass
你的第二个问题有点奇怪,因为你显示的代码正是你需要的。 Tuple
接受任意数量的类型参数(包括 ()
以指定空元组)。 Tuple[int, str, int]
是一个元组,由 3 个类型为 int
、str
、int
的元素按此特定顺序组成。特殊情况:Tuple[int, ...]
(注意文字省略号 - 它是语法的一部分)表示仅包含 int
的任意长度的元组。包含任意数量的 int
或 str
的元组将是 Tuple[Union[str, int], ...]
。 Fixed-length 元组(没有省略号)可以包含任何类型。您可以在 docs.