如何解决在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 举报,一经查实,本站将立刻删除。