在python中使用返回的变量

时间:2013-03-09 06:54:43

标签: python function return

为什么以下内容不允许我在函数返回后使用os变量? os模块未被导入,因此根本不应该成为问题。当我调用Begin()函数并在函数完成后打印os变量时,python表示该变量未定义。

def Begin():
    os = raw_input("Choose your operating system:\n[1] Ubuntu\n[2] CentOS\nEnter '1' or     '2': ")
    if os != '1' and os != '2':
        print "Incorrect operating system choice, shutting down..."
        time.sleep(3)
        exit()
    else:
        return os

Begin()
print os

2 个答案:

答案 0 :(得分:4)

您必须将返回的结果分配给实际变量。函数中的os仅存在于函数范围内,不能在函数范围之外使用。

result = Begin()
print result

正如@nneonneo所提到的,os是标准库的一部分,而且常用的模块,使用os作为变量名称会让读者感到困惑,如果os已导入,将覆盖它。

另一个建议:

if os != '1' and os != '2':

可以更加简洁地写成

if os not in ('1', '2'):

当您进行更多类似的比较时,这也会更容易。

答案 1 :(得分:2)

在你的代码中,os是@nneonneo建议的Begin()的局部变量,不使用标准模块名称。

如果您只想尝试打印价值,只需执行

即可
print Begin()

如果您需要使用Begin()中返回的值,则将其分配给变量,然后您可以进一步使用它。