无法仅在上执行代码

2024-09-29 17:09:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想执行一次代码块,所以我使用了如下全局变量:

unopened = True

def make_request:
  #some other code
  global unopened
  if(unopened):
    print "Writing in result file"
    result_file = open("resultFile.txt", "w")
    result_file.write(result)
    result_file.close
    unopened = False
  #some other code

我的问题是代码被多次执行,而事实并非如此。在

我在这里看到了一个类似的问题Function Not Changing Global Variable,但提出的解决方案似乎不适合我。在


Tags: 代码truemakeifrequestdefcodesome
2条回答

您可以通过创建一个可调用类来避免使用全局变量,该类的实例跟踪它们被调用的次数:

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

测试方法如下:

^{pr2}$

输出:

requester called

Now call three times:

requester called
requester called
requester called

现在,唯一会导致请求多次发出的是如果您创建requester的多个实例(或者向其构造函数传递一个大于1的数字)

编辑时:this问题的公认答案包含一个类似的想法,作为装饰器实现。在

没错,没有对我来说是完美的:

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  

^{pr2}$

相关问题 更多 >

    热门问题