首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python语法混乱

Python语法混乱
EN

Stack Overflow用户
提问于 2019-02-20 04:00:19
回答 4查看 72关注 0票数 -3

我正在自学python,并编写了一些脚本来更好地理解某些东西。我想知道为什么它返回0而不是27。如果这是java,我相信它会返回27 (我初始化了一个变量,后来调用了一个函数来更改该变量)。怎么一回事?

代码语言:javascript
复制
result = 0;

def cube(x):
    result = x * x * x

cube(3)

print(result)
EN

回答 4

Stack Overflow用户

发布于 2019-02-20 04:03:18

您的result变量在函数cube外部定义为全局变量,在函数cube内部定义为局部变量,这是一个与全局变量完全不同的变量。

您可以使用global语句将变量声明为全局变量,以便函数更新全局变量:

代码语言:javascript
复制
def cube(x):
    global result
    result = x * x * x

但应谨慎使用全局变量;最好使用返回值的函数。

票数 2
EN

Stack Overflow用户

发布于 2019-02-20 04:05:25

由于作用域的原因,结果是不变的。这才是正确的做法。

代码语言:javascript
复制
result = 0 # redundant

def cube(x):
    return x * x * x

result = cube(3)

print(result)

# expect 27 here
票数 2
EN

Stack Overflow用户

发布于 2019-02-20 04:04:53

你要找的是:

代码语言:javascript
复制
def cube(x):
    result=x*x*x
    print(result)

然后,如果你输入cube(3),你会得到27。首先定义您的函数将做什么,然后可以调用它。如果你想存储一个变量,你可以用return result结束它,然后你可以这样做:

代码语言:javascript
复制
def cube(x):
    result=x*x*x
    return result

res=cube(3)

然后,res将被存储为等于27的int

此外,未在return语句中指定的变量将始终是本地变量,因此您将无法恢复它们。此外,如上所述,您不必初始化变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54774054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档