函数内的变量

Variables within a function

正在编写一个函数来根据 relativedelta 计算日期。 如何使 'frequency' 成为变量? 例如,relativedelta(years=5),定义频率的能力:“years”、“months”、“days”等。

尝试了 f 字符串文字,但我认为撇号有问题。

def date_ago(date, period, frequency):
    """date: "yyyy-mm-dd"
    frequency: "years", "months", "weeks", "days"
    period: interger
    """
    date_ago = datetime.strptime(date, "%Y-%m-%d") - relativedelta(f'{frequency}={period}')
    return date_ago.strftime('%Y-%m-%d')


date_ago("2021-03-31", 5, "years")

答案:'2016-03-31'

您可能希望扩展关键字参数,而不是创建一个字符串参数!

https://docs.python.org/3/tutorial/controlflow.html#unpacking-argument-lists

    relativedelta(**{frequency: period})