小编典典

更新参数的值不会更新函数的结果吗?

python

我对编程完全陌生…

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

为什么蟒蛇不改变参数nsum功能,而它确实改变n自己?有人可以解释其背后的逻辑,并向我展示一种更改函数的方法,使nsum函数S变为15而不是1?


阅读 189

收藏
2021-01-20

共1个答案

小编典典

Python是一种命令式编程语言。这意味着python程序是一系列可以更改程序状态的
语句 (例如,通过将值分配给变量)。语句一旦执行,将不再对程序产生影响。换句话说:该语句可以更改程序的状态,但只能更改一次。

执行该语句时S = sum(L[0:n])sum(L[0:n])对其求值
,并将结果分配给该变量SL[0:n]的计算结果为[1],并且的总和[1]为1。因此,在该语句的末尾,的值为S数字1。

您的误解是S“记住”它等于sum(L[0:n]),但事实并非如此。S只是数字1。无论您更改nor的值如何,都没有关系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

旁注:更改S时将自动更新的语言n称为声明性编程语言

2021-01-20