Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';我只是+;int到变量(Python)_Python_Variables - Fatal编程技术网

为什么可以';我只是+;int到变量(Python)

为什么可以';我只是+;int到变量(Python),python,variables,Python,Variables,这与其说是一个编码问题,不如说是一个好奇的问题,但它帮助我理解Python是如何工作的。所以我的问题是,为什么我不能定义一个变量并加上我的int值呢?例如: pancake = 9 pancake + 1 print(pancake) 我对Python为什么不将1添加到9感兴趣,因为从技术上讲,我说的是9+1,对吗?可以,但应该使用+=运算符将值重新分配给pancake变量 pancake = 9 pancake += 1 print(pancake) 您需要使用+=运算符(而不是+)来修改

这与其说是一个编码问题,不如说是一个好奇的问题,但它帮助我理解Python是如何工作的。所以我的问题是,为什么我不能定义一个变量并加上我的int值呢?例如:

pancake = 9
pancake + 1
print(pancake)

我对Python为什么不将1添加到9感兴趣,因为从技术上讲,我说的是9+1,对吗?

可以,但应该使用+=运算符将值重新分配给pancake变量

pancake = 9
pancake += 1
print(pancake)

您需要使用
+=
运算符(而不是
+
)来修改左侧的变量。否则,结果总和不会指定给您尝试打印的变量

有关
+=
运算符的更多信息,请参阅此线程


基本上,
+=
会将值添加到右侧,并将结果分配给左侧的变量。单独使用
+
不会修改左侧的变量。

这是因为当您这样做时
pancake+1

您正在调用pancake对象的
\uuuuu add\uuuu
方法,pancake对象是int类的实例,此方法返回此对象“self”的值加上运算符+右侧的值之和。这就是pancake对象的值没有更新的原因,如果您稍微研究一下python的神奇方法,您可以更好地理解这种情况,但是您可以(它是
+=
而不是
+
pancake+1
不向
pancake
分配任何内容。为了将结果分配给
pancake
,它应该是
pancake+=1
。让我们看看是否会有一个有趣的答案(还没有)。它可能包含表达式和赋值这两个术语,但我对编程范例的术语也不太了解。一个有趣的问题是:给定该代码,该变量的值在哪种编程语言中会发生变异?
pancake+1
表示
10
。您可以将其分配给另一个变量(
more\u pancakes=pancake+1
),或将其传递给函数,或将其存储在列表中,或使用值执行任何其他操作。同时,
pancake
仍然意味着
9
,这意味着您可以在以后编写
更少的\u pancakes=pancake-1
,并获得
8
。希望您能理解为什么即使在创建值
10
?@sascha之后仍然有权访问值
9
是有用的。有些CPU对每个操作都有一个默认的目标寄存器,因此,例如,
ADD src1,src2,dest
可以缩写为
ADD src1,src2
意思是
ADD src1,src2,R1
。如果为这种语言编写宏汇编程序,
x+y
可能会变成
addx,y
,因此,例如,
R1+R4
会变成
addr1,R4
,这意味着
addr1,R4,R1
,它“变异”了R1。够近吗?:)