在Python函数中返回局部变量的问题

时间:2020-09-17 03:33:50

标签: python function

我是一个初学者,我相信这是一个简单的错误。在意外粘贴而不是复制正确的代码之前,我已使程序正确运行。如果给定一个奇数,则该代码应输出True,给定一个偶数,则将输出False。这是我修改过的,但仍然无法在全局范围内将isOdd值更改为False:

def odd(x):
  while x%2==0:
    isOdd=False
    return isOdd
isOdd=True
x=42
odd(x)
print(isOdd)

4 个答案:

答案 0 :(得分:1)

在主程序中,您忽略了返回值。更改您的代码以将其分配到您希望的位置。要学习的重要一件事是名称空间和变量作用域。您的程序有两个变量,名为isOdd:在主程序和函数中各一个。 Python不会以任何方式链接它们。

# isOdd=True  This line does *not* assign a value inside the function
x=42
isOdd = odd(x)
print(isOdd)

答案 1 :(得分:0)

在这种情况下,使用其他方法要好得多。我想像下面的代码(在C ++中)一样,不需要使用循环。

void number_check(int var1){
if(var1%2==0){
    cout << "Variable Is Even!" << endl;
}else{
    cout << "Variable is Odd!" << endl;
}

}

答案 2 :(得分:0)

您的功能可以简化为仅几个字符。在大多数语言(包括Python)中,0的计算结果为false;其他任何数字的计算结果为true。您唯一需要做的就是将值转换为布尔值并返回它。

def odd(x):
  return bool(x % 2)

x = 42
result = odd(x)
print(result)

注意

您的问题包括与Python范围界定相关的一些错误。我建议您参考变量作用域文档,并更好地了解何时使用while循环和if语句。

参考

Python变量作用域:https://python-textbok.readthedocs.io/en/1.0/Variables_and_Scope.html

答案 3 :(得分:-1)

它可以固定如下:

def odd(x):
  global isOdd  # Use 'global' keyword
  while x%2==0:
    isOdd=False
    return isOdd

但是我不建议使用全局变量声明

这会使代码片段化,并且难以阅读上下文。

在您的情况下(要知道是否为奇数),只需使用return即可。

is_odd = odd(x)