【发布时间】:2022-08-06 12:06:48
【问题描述】:
我试图用一个只接受字符串的函数来制作一个程序。如何使 python 函数参数始终为字符串,如果不是则抛出错误?
我正在寻找类似的东西:
def foo(i: int):
return i
foo(5)
foo(\'oops\')
除非这不会引发错误。
-
我使用的例子是从那里开始的,它只是没有给我一个错误
标签: python string types casting assertion
我试图用一个只接受字符串的函数来制作一个程序。如何使 python 函数参数始终为字符串,如果不是则抛出错误?
我正在寻找类似的东西:
def foo(i: int):
return i
foo(5)
foo(\'oops\')
除非这不会引发错误。
标签: python string types casting assertion
一个非常基本的方法是检查参数是否是str 的实例:
def f(x):
assert isinstance(x, str), "x should be a string"
# rest of the logic
如果不需要运行时检查,那么实现它的另一种方法是添加类型提示以及使用mypy 进行后续检查。这看起来像这样:
def f(x: str) -> str:
# note: here the output is assumed to be a string also
一旦带有类型提示的代码准备就绪,就可以通过mypy 运行它并检查任何可能的错误。
解决这个问题的更高级的方法包括定义一个包含断言的特定类(或通过尝试转换输入来强制类型),或使用一些第三方库:想到的一个是param,但肯定还有其他的.
【讨论】: