尽我最大的努力理解python的工作原理。我有一些扎实的C语言背景。
尝试将以下代码行转换为C:p, q = q, p - x // y * q
我的问题是,多个断言/属性(请纠正我的术语)不能像我期望的那样工作。
这行代码是如何真正展开成类似C的语法的呢?
发布于 2018-07-16 07:58:20
你可以用C语言做同样的事情:
temp = p - x / y * q;
p = q;
q = temp;
但真正发生的是,右侧创建了一个元组,元组项目是从左到右构建的:
t = (q, p - x // y * q)
然后这个元组在左边被解包:
p = t[0]
q = t[1]
这种使用元组进行本质上并行赋值的方法非常方便。我相信你很快就会习惯的。
但有一件事可能需要更长的时间才能适应,那就是Python的数据模型,它的工作方式与C的有很大的不同。你可能会发现这篇文章很有帮助:Facts and myths about Python names and values,它是由经验丰富的Ned Batchelder编写的。
https://stackoverflow.com/questions/51353078
复制相似问题