为什么交换方程的LHS和RHS会产生错误?

时间:2019-06-08 13:19:13

标签: python

def add_10(x):
    tenplus=x+10
    return tenplus
add_30=add_10(30)
add_90=add_10(90)

如果我交换了最后两行,我得到了:

def add_10(x):
    tenplus=x+10
    return tenplus
add_10(30)=add_30
add_10(30)=add_90

有错误。 计算机如何阅读第二版?

2 个答案:

答案 0 :(得分:3)

它们不是等式;他们是作业。不要混淆=作为数学等式符号。这是一个赋值运算符。它将RHS分配给LHS。

想象一下,赋值运算符是而不是=。然后,这会将add_10(30)的结果分配给名为add_30的变量:

add_30 ← add_10(30)

这会...将add_30分配给函数调用add_10(30)?这是什么意思?完全没有道理,是吗?

add_10(30) ← add_30     # huh?

确实,当我第一次开始编程时,我也对=感到困惑。如今,我们的程序员都已经习惯了=,但是当C语言问世时,它不一定是70年代的最佳选择。实际上,被设计为教学语言的Pascal故意发明了一种新的,非对称的赋值运算符,以免混淆数学系学生。 =平等运算符,而不是赋值

add_30 := add_10(30)
if add_30 = 40 then ...

太糟糕了,没赶上。 C赢得了影响战争,大多数现代语言的语法都基于C,因此=就是赋值。

答案 1 :(得分:1)

在这里,“ =”是赋值运算符。在第一种情况下,您将已知值分配给未知变量-这很有意义。在第二种情况下,我不确定您要达到什么目标。