model.train()
我正在努力解决这个错误。由于/example/vendor/bundle/ruby/2.3.0/gems/posix-spawn-0.3.12/test/
可以直接TypeError: start_end_period() got an unexpected keyword argument 'months'
relativedelta.relativedelta(test)
,我可以直接将months=1
作为参数传递给years=1
方法。
test
我如何调整此方法,以便它可以使用单个参数或关键字参数,因为start_end_period()
和start_date = CustomerProfile.objects.filter(user__date_joined__gte=entry_date_production).first().user.date_joined
def start_end_period(period):
start = start_date - relativedelta.relativedelta(period)
end = start + relativedelta.relativedelta(period - 1)
return start, end
都很好?
答案 0 :(得分:1)
首先,您不能将数月或数年的时间用于需要一段时间但不需要数天,数月或数年的功能。将函数声明为采用您想要的内容。
然后你需要将它们传递给relativedelta构造函数。这是最简单的方法
from dateutil.relativedelta import relativedelta
def start_end_period(start_date, days=0, months=0, years=0):
period = relativedelta(days=days, months=months, years=years)
start = start_date - period
end = start + period + relativedelta(days=1)
return start, end
import datetime
start_date = datetime.date(year=2017, month=3, day=1)
print (start_date)
print (start_end_period(start_date, days=7))
print (start_end_period(start_date, months=2))
print (start_end_period(start_date, years=1))
但是,您应该使用** kwargs,它将通过传递给函数的任何内容自动支持所有relativedelta的选项。
def start_end_period(start_date, **kwargs):
period = relativedelta(**kwargs)