qq_33866063
Rachel~Liu
采纳率0%
2021-03-03 15:31

发现python赋值的一个特性,同行赋值可以这样?

a = 3
b = 5
a, b = a + b, a
print(a, b)

结果是:a=8,b=3

本以为如此,a被a+b赋值之后,再进行b=a的赋值,还用了中间变量,结果python居然有这样的特性。在此记录一下

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • jslang 天际的海浪 1月前

    a + b, a 实际上是创建一个元组 (8,3) 作为中间结果。

    然后再把这个(8,3)元组解包分别赋值给a和b。

    点赞 2 评论 复制链接分享
  • funny123 coagenth 1月前

    这种赋值方式很巧妙。比如a,b两值互换,a,b=b,a。

    计算Fibonacci数列:

    def fib(n):

        a=1

        b=0

        f=[]

        for i in range(n):

            a,b=b,a+b

            f.append(b)

        return f   

    print(fib(10))

    点赞 1 评论 复制链接分享
  • weixin_45912291 -借我杀死庸碌的情怀- 1月前

    我觉得所给的代码可以认为和以下代码等效(相当于两边都是元组,然后元组内的元素对应赋值)  :

    a = 3
    b = 5
    (a, b) = (a + b, a)
    print(a, b)
    # 注:实测输出结果为  8 3
    点赞 评论 复制链接分享
  • qq_33866063 Rachel~Liu 1月前

     a, b = c, da,b=c,d 操作的原理是先暂存元组 (c, d)(c,d) ,然后 “按左右顺序” 赋值给 a 和 b 。

    点赞 评论 复制链接分享
  • songhaixing2 给你骨质唱疏松 1月前

    这个在Python里面叫交叉赋值

    点赞 评论 复制链接分享

为你推荐