我对编程完全陌生…
L = [1, 2, 3, 4, 5] n = 1 S = sum(L[0:n]) while n < 5: n += 1 print(n) # output: 5 print(S) # output: 1
为什么蟒蛇不改变参数n的sum功能,而它确实改变n自己?有人可以解释其背后的逻辑,并向我展示一种更改函数的方法,使n该sum函数S变为15而不是1?
n
sum
S
Python是一种命令式编程语言。这意味着python程序是一系列可以更改程序状态的 语句 (例如,通过将值分配给变量)。语句一旦执行,将不再对程序产生影响。换句话说:该语句可以更改程序的状态,但只能更改一次。
执行该语句时S = sum(L[0:n]),sum(L[0:n])将 对其求值 ,并将结果分配给该变量S。L[0:n]的计算结果为[1],并且的总和[1]为1。因此,在该语句的末尾,的值为S数字1。
S = sum(L[0:n])
sum(L[0:n])
L[0:n]
[1]
您的误解是S“记住”它等于sum(L[0:n]),但事实并非如此。S只是数字1。无论您更改nor的值如何,都没有关系L。数字1保持数字1。如果要S更改,则必须使用另一个赋值语句 显式 更新它:
L
L = [1, 2, 3, 4, 5] n = 1 S = sum(L[0:n]) while n < 5: n += 1 S = sum(L[0:n]) print(n) # output: 5 print(S) # output: 15
旁注:更改S时将自动更新的语言n称为声明性编程语言。