2017-01-12 4 views
-1

私はPythonでかなり単純なテキストエディタコンソールアプリケーションを作っていますが、始めに問題があります。私はすでに存在していないtxtruetxtrue場合を定義しようとしている既に作成されていない変数をPythonで作成するにはどうすればよいですか?

if txtrue == 0 : 
     txtrue = Empty 

if txtrue == "Present" : 
    svd = "one" 
else : 
    svd = "no" 

:それはむしろ簡単なコードです。これはどうすればいいですか?

txtrueは、テキストが異なる変数に存在するかどうかを単純に定義します。

+0

あなたが得るエラーは何ですか? – Inconnu

+3

あなたのプログラムのどこかで変数がまだ存在するかどうかわからない場合、あなたは変なことをしています。 – RemcoGerlich

+0

'try ... except'ステートメントを使用 –

答えて

1

変数がlocalglobalかどうかによって異なります。 locals()と定義された変数の名前が含まれglobals():ローカル変数の

if 'txtrue' not in locals(): 
    #define txtrue 
    txtrue = None 

、そしてもちろんglobals()のグローバルなもののためにPythonには2つのコレクションを維持します。

しかし、実際にはあなたのコードはかなり悪いデザインに見えます。 Noneのような初期値を与えて、まだNoneを持っているかどうかをテストすることもできます。あなたは名前がその上globals、行動に定義されているかどうかを確認でき

2

:同様

if not 'name' in globals(): 
    name = 'foo' 
else: 
    print(name) 

を使用すると、関数の中でなら、あなたもlocalsで覗いことができます。私はコメントの一つに同意するだろう。この制御の欠如はかなり奇妙に思えます。

+0

その半分をクリアしましたが、アプリケーションが終了するたびに変数がリセットされました。それは全く別の質問ですか? –

+0

Pythonの実行が終了したら、はい、すべてクリアされます。実行後に変数とその値を保持する必要がある場合は、変数をどこかに保存し、変数が定義されているかどうかを調べる必要があります。 –

0
try: 
    txtrue 
except NameError: 
    txtrue = "Present" 

これは、実行しようとしていることを達成するはずです。

0

試し:NameError除く

if txtrue not in locals(): 
    txtrue = None 

txtrue = "Present" 
関連する問題