如何将参数转换为浮点数

时间:2016-01-17 14:21:03

标签: python python-3.x

我刚刚开始学习python,并想知道是否有办法将我的参数转换为浮点数,而不是我的方式。一种更简单的方法,而不是先将它们变成一个变量。

def add(arg1, arg2):
  a = float(arg1)
  b = float(arg2)
  return a + b

1 个答案:

答案 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'