我喜欢在编写Python时定义参数类型,以便读者更容易地理解应该传递给函数的内容,以及数据的类型。例如,
def reverse_string(string_to_reverse: str) -> str:
...
return reversed_string
但是,我有一个特殊情况,我正在创建的函数不仅是str
类型的函数,而且应该始终传递两个字符串值中的一个。任何其他的东西都应该抛出和异常,让用户知道一些混乱的事情。
在代码中,这个应该是,
>>> def some_func(test_string: str["test_string_1", "test_string_2"]) -> str:
... return f"Valid string passed \'{test_string}\'"
...
>>> some_func("test_string_1") # ✔️
... "Valid string passed 'test_string_1'"
>>> some_func("test_string_2") # ✔️
... "Valid string passed 'test_string_2'"
>>> some_func("test_string_3") # ❌
... "EXCEPTION: SOME EXCEPTION MESSAGE THROWN HERE"
是否有一种方法可以在Python中强制执行,包括库或不带库?
感谢您的建议。
谢谢!
发布于 2022-07-31 05:14:24
PythonJava3.8支持>=类型,在您的例子中应该是
from typing import Literal
def some_func(test_string: Literal["test_string_1", "test_string_2"]):
...
然而,这只会提供静态类型分析,并且不会引发任何运行时异常(就像任何其他Python类型注释/提示都不会引起的那样)。对于这些,您必须使用assert
或显式raise
异常。
https://stackoverflow.com/questions/73183577
复制相似问题