更新参数的值不会更新函数的结果吗?
我对编程完全陌生…
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?
-
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])
,但事实并非如此。S
只是数字1。无论您更改n
or的值如何,都没有关系L
。数字1保持数字1。如果要S
更改,则必须使用另一个赋值语句
显式 更新它: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