Python - 传递一个范围的浮点数(没有步长)作为函数的参数

Python - Pass a range of float (without step) as an argument of a function

我创建了一个函数,我希望能够使用我调用的一组关键字参数来调用它 **criterias:

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

但我正在寻找一种更简洁的方法来通过两个边界,而不必为每个和许多 if 条件创建参数来完成任务。

看起来像这样的东西:

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

现在有这种东西吗?

感谢您的提示,

是这样的吗?

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 异常。