python中的多赋值与多赋值用例

2024-04-25 12:43:13 发布

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

如果我想分配2个值,是否认为分配以下值更像python:

speed, acceleration = 10, 9.8

或者干脆用普通的

speed = 10
acceleration = 9.8

我知道这两个变量是不一样的,在第一个版本中,所有表达式都是在赋值之前计算的,因此在这种区别影响结果的情况下,使用第一个变量是有意义的。(例如,交换值a,b=b,a非常好)。你知道吗

在两个变量之间的选择不会改变结果的情况下,您什么时候还会使用多重赋值,什么时候会认为多重赋值更符合python的精神?你知道吗


Tags: 版本精神表达式情况意义speed赋值区别
3条回答

我认为这“主要是基于观点的”,但如果没有特别的理由使用多个赋值(例如交换示例或返回值解包),我会坚持使用简单的方法,因为:

  • 错过这项任务更难。你知道吗
  • 对于来自其他语言的人来说,它更容易阅读(不那么令人惊讶或困惑)。你知道吗
  • 虽然对于一些变量来说这是可以的,但它并没有进一步扩展。在大多数情况下,三个肯定是太多了。因此,您的代码约定必须类似于“在一行中分配变量,如果您有两个变量,或者在一行中分配每个变量,如果您有更多变量”,或者“成对分配变量”(?)。你知道吗
  • 更改其中一个变量的值不会影响其他变量的行(从源代码管理的角度来看,这是积极的)。你知道吗

也就是说,在有些情况下,我认为多个任务可能会更好。这是相当主观的,但如果我认为这些值是密切相关的(即一个没有另一个就没有意义),那么我可能会把它们放在一行。示例包括一个范围或一组三个坐标中的最小值和最大值。还有一些不太明确的例子,比如“多项式中的系数”(它们紧密相关,但它们的意义和关系却不那么直观)或者你自己的速度和加速度例子,它们也非常相关,但仍然有自己的意义。也许,我潜意识里的经验法则是,如果我觉得它们可能属于同一个tuple^{},我可以把它们放在一起。你知道吗

像大多数这样的问题一样,都是关于可读性和易变性的。你知道吗

在自己的行中分配每个变量通常在可变性方面得分更高,但在少数情况下,多重分配通过邻近关系传递关系,使理解更容易(在我看来)。你知道吗

例如:

coords = (18, 32)
x, y = coords

或:

string = "I am a big string."
a, b, c = string[:7], string[7:11], string[11:]

但是,当然,这都是情境性的,如果你有疑问的话,我会错在每行一个作业,因为以后更容易改变。你知道吗

编辑:我忘记了一个不在每行做多个作业的主要原因,我最近遇到了这个问题,所以我想我应该更新答案。你知道吗

如果在具有多个赋值的行上发生错误,则更难调试。有时,您可以使用复杂的列表理解和几个函数调用为多个变量赋值,而分离行并再次调试以找出问题发生的位置只是额外的工作。你知道吗

个人作业+1。你知道吗

交换价值是一个非常有说服力的理由。 但对于简单的赋值,我会选择第二种方法。 它更容易阅读(如果您有10个变量,请参见图)。你知道吗

而且更容易改变。(同样,如果有10个变量,现在需要更改第6个变量的值)。你知道吗

同样从编辑的角度来看,编辑每一行要比试图找到具有其值的变量容易得多。。。你知道吗

相关问题 更多 >