为什么 print(num) 打印'0'? num 是全局变量,我在局部函数中将 num 更改为“6”

问题描述 投票:0回答:1

“这是我的代码。当我编译这段代码时,我期望‘print(num)’打印‘6’。我期望背后的原因是,首先,变量‘num’是全局的。因此,在第一行中,'num' 被重置为 '0'。此外,在第四行 'print(average(7, 5, 9))' 中,定义了函数 'average',因为代码是由最后一行执行的。 'num' 从 7 更改为 6。因此,'print(num)' 应该打印 '6',但是,它实际上打印了 '0',为什么会出现这种情况? 6' 打印为 'num',引用 'num1'?”

num = 0
def average(num1, num2, num3):
    num = num1
    return (num1 + num2 + num3) / 3
print(average(7, 5, 9))
print(average(6, 6, 7))
print(num)
python scope
1个回答
0
投票

我需要更改什么才能将“6”打印为“num”

您需要使用

global
语句来更改函数外部的值,简单的例子

num = 0
def set_num(n):
    global num
    num = n
set_num(100)
print(num)  # 100
© www.soinside.com 2019 - 2024. All rights reserved.