微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在Python函数中返回局部变量的问题

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

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

解决方法

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

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

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

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

}

,

您的功能可以简化为仅几个字符。在大多数语言(包括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

,

它可以固定如下:

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

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

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

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

is_odd = odd(x)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。