为什么以下内容不允许我在函数返回后使用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
答案 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()中返回的值,则将其分配给变量,然后您可以进一步使用它。