【问题标题】:I don't understand why these variables have these values我不明白为什么这些变量有这些值
【发布时间】:2020-11-18 02:03:43
【问题描述】:

我有以下 python 函数,但我对第 2 行 (q, r = 0, n) 感到困惑

1 def div3(n):
2     q, r = 0, n
3     while r >= 3:
4         q, r = q+1, r-3
5     return q

div3(6)

如果我在第二行执行时运行该函数,我得到 r=6、n=6 和 q=0,这是为什么呢? 我认为当函数第一次运行时,在执行第二行时,值将是 r=0 和 q=6 和 n=6?是不是和q r 和n 用逗号分隔的方式有关?

【问题讨论】:

  • python 会将0 分配给q 并将n 的值分配给r。它使用右侧的值分配给左侧的变量。
  • 为了更好地理解它,请从左到右查看表达式。等号之前最左边的变量将分配给等号之后的最左边。
  • 哦,谢谢,我现在明白了!

标签: python python-3.x variable-assignment


【解决方案1】:

q, r = 0, n 行实际上使用了元组解包。使用括号,该行看起来像(q, r) = (0, n),而不是q, (r = 0), n。基本上,它创建元组(0, n),将第一个元素分配给q,将第二个元素分配给r,所以代码相当于:

q = 0
r = n

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多