我正在自学python,并在编写一些脚本以更好地理解某些内容。我想知道为什么它返回0而不是27。如果我相信这是java,它将返回27(我初始化了一个变量,后来称为更改该变量的函数)。发生了什么事?
result = 0;
def cube(x):
result = x * x * x
cube(3)
print(result)
答案 0 :(得分:2)
您的result
变量既在函数cube
外部定义为全局变量,又在函数cube
内部定义为局部变量,这与全局变量完全不同
您可以使用global
语句将变量声明为全局变量,以使函数更新全局变量:
def cube(x):
global result
result = x * x * x
,但应谨慎使用全局变量;首选返回值的函数。
答案 1 :(得分:2)
由于范围,结果不变。这是正确的方法。
result = 0 # redundant
def cube(x):
return x * x * x
result = cube(3)
print(result)
# expect 27 here
答案 2 :(得分:0)
您要寻找的是这个东西
def cube(x):
result=x*x*x
print(result)
然后如果您输入cube(3)
,您将得到27
。首先定义函数将要执行的操作,然后可以调用它。如果要存储变量,请以return result
结尾,然后可以执行以下操作:
def cube(x):
result=x*x*x
return result
res=cube(3)
然后,res
将存储为等于27的int
。
此外,return
语句中未指定的变量将始终是局部变量,因此您将无法恢复它们。另外,如上所述,您不必初始化变量。
答案 3 :(得分:0)
您的函数没有返回值,因此,打印将使用第一个结果变量。
result = 0;
def cube(x):
return x*x*x
print(cube(3))
因此,在这种情况下,您无需使用result,但是如果需要,您可以这样做:
result = 0;
def cube(x):
return x*x*x
result = cube(3)
print(result)
希望您回答您的问题,问候!
答案 4 :(得分:0)
为使您的程序正常运行,我们需要使用“ global”关键字。如果要进行赋值/更改为全局变量,只需在函数中使用global关键字。
result = 0
def cube(x):
global result
result = x * x * x
cube(3)
print(result)
如果全局语句出现在一个块中,则该名称的所有用法 声明中指定的名称是指该名称在 顶级名称空间。
在这里您可以阅读有关scope of variables in python的详细说明
但是,从函数中获取结果的正确方法是:
def cube(x):
return x * x * x
result = cube(3)
print(result)