Reputation: 667
I created a function and I would like to be able to call it with a set of keyworded-parameters that I call **criterias
:
def actionBasedOnParameters(**criterias):
# my code
Inside this set of parameters one of them will be called 'SumInc' and I would like to pass a range to it. The range will be of the form of [1:15] or [1:] or [:15]. Something that will essentially let me check whether a variable in my code is greater than a certain boundary or lower than another boundary or both. In the same way, as these lines of codes do:
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
But I am looking for a neater way to pass both boundaries without having to create a parameter for each and many if conditions to get things done.
Something that would look like this:
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
Is there something of this kind existing?
Thanks for your tips,
Upvotes: 0
Views: 297
Reputation: 1074
Something like this?
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))
Also, you'd better use 'SumInc' in criterias
instead of criterias['SumInc'] is not None
because in your case if there is no 'SumInc'
it will raise you a KeyError
exception.
Upvotes: 2