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

发布于 2021-01-29 15:12:14

我对编程完全陌生…

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?

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    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称为声明性编程语言



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看