我们应该使用元组还是列表作为索引

2024-04-25 21:06:02 发布

您现在位置:Python中文网/ 问答频道 /正文

对于index_together,我想知道,我应该使用tuple还是list,因为两者似乎都是可行的。你知道吗

元组

class ApiMonthlyUsage(models.Model):
    month = models.IntegerField(blank=False, null=False)
    count = models.IntegerField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        index_together = (
            ('month', 'user'),
        )

列表

class ApiMonthlyUsage(models.Model):
    month = models.IntegerField(blank=False, null=False)
    count = models.IntegerField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        index_together = [
            ['month', 'user'],
        ]

Tags: falseindexmodelmodelscountnullclasstogether
1条回答
网友
1楼 · 发布于 2024-04-25 21:06:02

这里唯一客观的答案是给你列出每种方式的共同论点:

  • list:Django文档和示例使用列表。与一个框架的一致性,特别是一个具有相对强大的习惯用法的框架,这些习惯用法通常不同于Python世界的其他部分,是值得的。你知道吗
  • tuple:序列是不可变的。可变性是列表和元组之间唯一的行为差异,因此(至少根据许多Python开发人员,包括许多core/stdlib开发人员的说法),在它们之间进行选择通常是最明智的方法。你知道吗
  • list:tuples使用的范例是一个固定数量的值,其中每个位置都有一个特定的类型/语义,因此(至少根据许多Python开发人员,包括Guido和其他一些core/stdlib开发人员)在需要任意长度的同质序列时,使用list更为清晰。你知道吗
  • tuple:tuple使用的内存稍微少一点,偶尔也会更快一些,尽管这两者在这里都不太可能相关。你知道吗

但这取决于你对每一条的赞同程度,以及给予它们多大的权重。你知道吗

但实际上,只要您选择其中一个并在项目中一致地使用它,您的代码对于任何其他Python开发人员来说都是完全可读的,所以我不会强调太多。如果你真的不能决定,扔一枚硬币然后继续。你知道吗

相关问题 更多 >