【问题标题】:Python ensure function parameter is always a stringPython确保函数参数始终是字符串
【发布时间】:2022-08-06 12:06:48
【问题描述】:

我试图用一个只接受字符串的函数来制作一个程序。如何使 python 函数参数始终为字符串,如果不是则抛出错误?

我正在寻找类似的东西:

def foo(i: int): 
       return i  
foo(5) 
foo(\'oops\')

除非这不会引发错误。

标签: python string types casting assertion


【解决方案1】:

一个非常基本的方法是检查参数是否是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,但肯定还有其他的.

【讨论】:

  • 是否也可以在定义函数的规则中做到这一点
  • 据我了解,这是可能的,但需要高级语法,所以@luk2302 发布的链接是一个好的开始。
猜你喜欢
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 2018-02-26
  • 2021-10-28
相关资源
最近更新 更多