我刚刚开始学习python,并想知道是否有办法将我的参数转换为浮点数,而不是我的方式。一种更简单的方法,而不是先将它们变成一个变量。
def add(arg1, arg2):
a = float(arg1)
b = float(arg2)
return a + b
答案 0 :(得分:2)
我会使用decorator来做这件事
from functools import wraps
def floatArgs(f):
@wraps(f)
def wrapper(*args):
return f(*map(float, args))
return wrapper
@floatArgs
def add(arg1, arg2):
return arg1 + arg2
>>> add(4,5)
9.0
一个通用的aproach可以使用泛型装饰器来使用参数本身在参数上映射类型:
def typeArgs(t):
def retF(f):
@wraps(f)
def wrapper(*args):
return f(*map(t, args))
return wrapper
return retF
@typeArgs(float)
def add(arg1, arg2):
return arg1 + arg2
@typeArgs(str)
def concatenate(arg1, arg2):
return arg1 + arg2
>>> add(4, 5)
9.0
>>> concatenate(4,5)
'45'