What is the Python equivalent of static variables inside a function?

前端 未结 26 2766
天命终不由人
天命终不由人 2020-11-22 00:45

What is the idiomatic Python equivalent of this C/C++ code?

void foo()
{
    static int counter = 0;
    counter++;
          


        
26条回答
  •  时光说笑
    2020-11-22 01:31

    One could also consider:

    def foo():
        try:
            foo.counter += 1
        except AttributeError:
            foo.counter = 1
    

    Reasoning:

    • much pythonic ("ask for forgiveness not permission")
    • use exception (thrown only once) instead of if branch (think StopIteration exception)

提交回复
热议问题