Python语法混淆

时间:2019-02-19 20:00:19

标签: python

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

result = 0;

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

cube(3)

print(result)

5 个答案:

答案 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)