bit*_*ask 4 python types type-conversion
考虑一个函数(及其使用)的示例,该函数接收一个仅在int以下情况下有意义的参数:
def fun(index):
index = int(index)
# do something with index
def main():
print fun(1e6)
Run Code Online (Sandbox Code Playgroud)
我发现我在几个处理整数的函数上不断重复这个模式,因为它确保我真的收到一些整数(注意这1e6是一个浮点实例).
这是有点麻烦,如果忘记了,一旦它可能产生的问题(有是该反应不同浮点/整数/字符串/ ...值的代码).那么这可能以某种方式编码在函数签名中吗?
例如,这个伪代码的内容:
def fun(int index):
# do something with index
Run Code Online (Sandbox Code Playgroud)
首先,你不应该真的这样做(即使有些日子我也想要这样......).Python不是静态类型的,所以你不应该真正引入cludgy静态类型.
Buuut,回答你的问题.装饰者:
def ensure_int(fn):
def wrapper(num):
return fn(int(num))
return wrapper
def test(num):
return num + 2
@ensure_int
def test2(num):
return num + 2
Run Code Online (Sandbox Code Playgroud)
像:
> test("2")
ERROR!!!
>test2("2")
4
Run Code Online (Sandbox Code Playgroud)