我对 Python 还是很陌生,我正在努力适应它的动态类型。有时我有一个函数或一个类,它需要一个特定类型的参数,但可能会得到另一个对其强制的类型的值。例如,它可能期望 afloat
但接收的是 int 或小数。或者它可能期望一个字符串,而是接收一个定义__str__
特殊方法的对象。
将参数强制为正确类型(及其原因)的最佳实践是什么?我是在函数/类中还是在调用者中执行此操作?如果在调用者中,我是否也在函数中检查它?例如。
备选方案 1:
def myfunc(takes_float):
myval = float(takes_float)
myfunc(5)
备选方案 2:
def myfunc(takes_float):
myval = takes_float
myfunc(float(5))
备选方案 3:
def myfunc(takes_float):
assert isinstance(takes_float, float)
myval = takes_float
myfunc(float(5))
我已经阅读了这个答案和这个答案,他们说在 Python 中检查类型是“坏的”,但我不想浪费时间追踪非常简单的错误,这些错误会被编译器以静态类型的方式立即拾取语言。