Python - 传递一系列float(无步)作为函数的参数

时间:2016-08-08 16:04:00

标签: python function arguments range keyword-argument

我创建了一个函数,我希望能够使用一组我称之为**criterias的keyworded参数来调用它:

def actionBasedOnParameters(**criterias):
    # my code

在这组参数中,其中一个将被称为' SumInc'我想通过一个范围。范围将是[1:15]或[1:]或[:15]的形式。一些基本上让我检查我的代码中的变量是否大于某个边界或低于另一个边界或两者的东西。 以同样的方式,这些代码行:

In [188]: 1 <= 15.98877 <= 15
Out[188]: False

In [188]: 1 <= 15.98877 
Out[188]: True

In [188]: 15.98877 <= 15
Out[188]: False

但是我正在寻找一种更简洁的方法来传递两个边界,而不必为每个人创建一个参数,如果条件要完成,还有很多。

看起来像这样的东西:

In [189]: criterias = dict(SumInc=[:15])

def actionBasedOnParameters(**criterias):
    if criterias['SumInc'] is not None:
        if my_variable is in criterias['SumInc']:
            #action1
        else:
            #action2

是否存在此类事件?

感谢您的提示,

1 个答案:

答案 0 :(得分:2)

这样的东西?

criterias = dict(SumInc=(1,15))

def actionBasedOnParameters(**criterias):
    if 'SumInc' in criterias:
        lower, upper = criterias['SumInc']
        if lower <= my_variable <= upper:
            #action1
        else:
            #action2

infinity = float('inf')
actionBasedOnParameters(SumInc=(1, 15))
actionBasedOnParameters(SumInc=(-infinity, 15))
actionBasedOnParameters(SumInc=(1, infinity))

此外,您最好使用'SumInc' in criterias代替criterias['SumInc'] is not None,因为在您的情况下,如果没有'SumInc',则会引发KeyError例外。