我想在我的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/

10-12 21:58
查看更多