我创建了一个函数,我希望能够使用一组我称之为**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
是否存在此类事件?
感谢您的提示,
答案 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
例外。