Home > Mobile >  Dynamic Variable Parameter Python
Dynamic Variable Parameter Python

Time:07-31

I feel like this isn't possible but I thought I would ask anyway. I have a short piece of code that I'm intending to use to add weeks/months/year to a given date. The time frame chosen will be dependent on a string passed. My question is when it comes to something like relativedelta is it possible to dynamically choose with parameter to use? So if the string passed is "weeks" then it would pass relativedelta(weeks=1) and if "months" it would pass relativedelta(months=1)? I've attached my code which I know doesn't work but it's just to illustrate what I'm imagining.

from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta

today = datetime.today()

print(today)
print(today   relativedelta(months=2))

loop = 1
for i in range(5):
    variable_weeks = 'weeks'
    next_month = today   relativedelta(variable_weeks=loop)
    date_string = next_month.strftime('%Y-%m-%d')
    print(date_string)
    loop  = 1

CodePudding user response:

You can do:

...
variable_weeks = 'weeks'
next_month = today   relativedelta(**{variable_weeks: loop})
...

This uses a dict for the key-value pairs that you can define with variables. The dict is then unpacked as the input for relativedelta.

  • Related