
在python中,一切都是对象,包括函数。这意味着您可以将函数影响到变量:
>>> from django.utils import timezone>>> foo = timezone.now>>> foo<function django.utils.timezone.now>>>> foo()datetime.datetime(2016, 7, 7, 9, 11, 6, 489063)
函数是可调用的对象:
>>> callable(foo)True>>> callable(foo())False
当
default接收到可调用对象时,每次请求默认值时都会调用该可调用对象。
另一方面,在
timezone.now()设置之前调用时
default,将给出并固定该值。提醒一下,由于以下行是类属性,因此在服务器启动时仅执行一次:
datetime_released = models.DateTimeField(default=timezone.now())
因此
timezone.now()仅执行一次。传递一个callable
timezone.now使得可以在需要时重新计算该值。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)