gpt4 book ai didi

python - 生成动态时间增量 : python

转载 作者:行者123 更新时间:2023-11-28 21:30:43 26 4
gpt4 key购买 nike

这是我的情况:

import foo, bar, etc

frequency = ["hours","days","weeks"]

class geoProcessClass():

def __init__(self,geoTaskHandler,startDate,frequency,frequencyMultiple=1,*args):
self.interval = self.__determineTimeDelta(frequency,frequencyMultiple)

def __determineTimeDelta(self,frequency,frequencyMultiple):
if frequency in frequency:
interval = datetime.timedelta(print eval(frequency + "=" + str(frequencyMultiple)))
return interval
else:
interval = datetime.timedelta("days=1")
return interval

我想用 timedelta 动态定义一个时间间隔,但这似乎不起作用。

有什么具体的方法可以做到这一点吗?我在这里得到无效的语法。

有什么更好的方法吗?

最佳答案

您可以使用类似 func(**kwargs) 的语法调用带有动态参数的函数,其中 kwargs 是命名参数的名称/值映射字典。

我还将全局 frequency 列表重命名为 frequencies,因为 if frequency in frequency 这行没有多大意义。

class geoProcessClass():
def __init__(self, geoTaskHandler, startDate, frequency, frequencyMultiple=1, *args):
self.interval = self.determineTimeDelta(frequency, frequencyMultiple)

def determineTimeDelta(self, frequency, frequencyMultiple):
frequencies = ["hours", "days", "weeks"]

if frequency in frequencies:
kwargs = {frequency: frequencyMultiple}
else:
kwargs = {"days": 1}

return datetime.timedelta(**kwargs)

就其值(value)而言,从风格上讲,通常不赞成默默地纠正调用者所犯的错误。如果调用者用无效参数调用您,您可能应该立即大声失败,而不是试图继续喋喋不休。我建议不要使用 if 语句。

有关可变长度和关键字参数列表的更多信息,请参阅:

关于python - 生成动态时间增量 : python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1649753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com