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

返された結果を実際の変数に割り当てる必要があります。関数内のosは関数スコープ内にのみ存在し、関数スコープ外では使用できません。

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

コードでは、@ nneonneoが提案するように、osはBegin()のローカル変数であり、標準のモジュール名を使用しないでください。

値を印刷しようとしているだけの場合は、簡単に実行できます

print Begin()

Begin()からの戻り値を使用する必要がある場合は、それを変数に割り当てれば、さらに使用できます。

于 2013-03-09T07:22:20.160 に答える