2016-05-02 6 views
-4

たら、コードを実行することはできませんそうでなければならない。は、私は一度だけのコードの塊を実行したいので、私はこのようなグローバル変数を使用する唯一の

私はFunction Not Changing Global Variableここで同様の問題を見ましたが、提示ソリューションは私のために動作するようには思えません。

+4

、そのコードは(脇構文エラー;あなたはmake_request' 'の後に括弧が欠落している)の罰金を探します。 [最小限の、完全な、そして*検証可能*例](http://stackoverflow.com/help/mcve)を投稿してください。 – chepner

+3

さらに、 'result_file.close'の代わりに' result_file.close() 'を呼び出す必要があるので、ファイルは閉じません。 – mvelay

+4

コード自体は何度も繰り返されることはありません。それは複数回繰り返されます....このコードをどのように呼び出すのですか? – JustGreat

答えて

-4

それが正しいノーであるとは、私のために完璧に働いている:

unopened = False 
result = "hello" 

def make_request(): 

    global unopened 
    unopened = True 

    if unopened: 
     print ("Writing in result file") 
     result_file = open("resultFile.txt", "w") 
     result_file.write(result) 
     result_file.close 

make_request() 
+2

はどのように任意のポイントは、それをテストする直接、その後 '' true'にunopened'設定とするがあるかもしれませんか? –

1

あなたは、そのインスタンスが何回彼らを追跡する呼び出し可能なクラスを作ることによって、グローバル変数を使用しないように試みることができます呼ばれています

のようにテストされた
class requester(): 
    def __init__(self,cap = 1): 
     self.cap = cap 
     self.called = 0 
    def __call__(self): 
     if self.called < self.cap : 
      #code to be executed at most cap times goes here 
      print("requester called") 
      self.called += 1 

make_request = requester() 
for i in range(10): 
    make_request() 

print("\nNow call three times:\n") 

make_request = requester(3) 

for i in range(10): 
    make_request() 

出力:あなたはrequesterの複数のインスタンスを作成(またはそのコンストラクタに1よりも高い数値を渡す場合

requester called 

Now call three times: 

requester called 
requester called 
requester called 

さて、リクエストを複数回行うことが原因となる唯一のものがあります)

編集時:thisの回答には、デコレータとして実装されている同様の考えが含まれています。自身によって

関連する問題