我想在我的Django测试中创建一个用于创建问题对象的快捷方式功能。
我不喜欢一直输入new_q(timedelta(minutes=1))
之类的东西,我只想写一次timedelta并能够以一种很好的方式将其参数传递给new_q
函数。
是否有任何针对此问题的Pythonic单行解决方案,其中我不必将kwargs捕获为变量,然后在新行中创建timedelta对象?
from datetime import timedelta
from django.utils import timezone
def new_q(question_text = '', offset=timedelta(**kwargs)):
time = timezone.now() + offset
return Question.objects.create(question_text=question_text, pub_date=time)
用法:
test1 = new_q(minutes=1)
test2 = new_q('yo?', seconds=1)
test2 = new_q(question_text = 'maw?', hours=11)
test2 = new_q(question_text = 'maw?')
test2 = new_q('yo?')
最佳答案
def new_q(question_text = '', **kwargs):
time = timezone.now() + timedelta(**kwargs)
...
这仍然很简洁:它两次提到
kwargs
,但没有offset
或其他任何东西。关于python - 在此函数中传递kwargs的最pythonic方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50121369/