1

为什么以下内容不允许我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
4

2 回答 2

4

您必须将返回的结果分配给实际变量。函数中的osin 只存在于函数作用域内,不能在函数作用域外使用。

result = Begin()
print result

正如@nneonneo 提到的,os它是标准库的一部分,也是一个常用的模块,os用作变量名会使读者感到困惑,如果os被导入,则会覆盖它。

另一个建议:

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

可以更简洁地写为

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

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

于 2013-03-09T06:55:35.433 回答
2

在您的代码中,os 是 Begin() 的局部变量,正如@nneonneo 所建议的那样,不要使用标准模块名称。

如果您只是想打印值,您可以简单地做

print Begin()

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

于 2013-03-09T07:22:20.160 回答