我的情况是:
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
动态定义一个时间间隔,但这似乎行不通。在
有没有什么特别的方法可以让它工作?我得到了无效的语法。在
有更好的方法吗?在
您使用
print eval(...)
看起来有点过于复杂(正如您所提到的,这是错误的)。在如果要将关键字参数传递给函数,只需执行以下操作:
但是我没有看到一个名为
frequency
的关键字参数,所以这可能是一个单独的问题。在可以使用类似
func(**kwargs)
的语法调用带有动态参数的函数,其中kwargs
是命名参数的名称/值映射字典。在我还将global
frequency
列表重命名为frequencies
,因为if frequency in frequency
行没有什么意义。在不管怎样,在文体上,人们通常不赞成默默地纠正来电者犯下的错误。如果来电者用无效的参数打电话给你,你应该立刻大声地失败,而不是试着一直咕噜咕噜地叫。我建议不要使用
if
语句。在有关可变长度和关键字参数列表的详细信息,请参阅:
相关问题 更多 >
编程相关推荐