我正在自学python,并编写了一些脚本来更好地理解某些东西。我想知道为什么它返回0而不是27。如果这是java,我相信它会返回27 (我初始化了一个变量,后来调用了一个函数来更改该变量)。怎么一回事?
result = 0;
def cube(x):
result = x * x * x
cube(3)
print(result)
发布于 2019-02-20 04:03:18
您的result
变量在函数cube
外部定义为全局变量,在函数cube
内部定义为局部变量,这是一个与全局变量完全不同的变量。
您可以使用global
语句将变量声明为全局变量,以便函数更新全局变量:
def cube(x):
global result
result = x * x * x
但应谨慎使用全局变量;最好使用返回值的函数。
发布于 2019-02-20 04:05:25
由于作用域的原因,结果是不变的。这才是正确的做法。
result = 0 # redundant
def cube(x):
return x * x * x
result = cube(3)
print(result)
# expect 27 here
发布于 2019-02-20 04:04:53
你要找的是:
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
语句中指定的变量将始终是本地变量,因此您将无法恢复它们。此外,如上所述,您不必初始化变量。
https://stackoverflow.com/questions/54774054
复制相似问题