Есть ли у Python что-то вроде переменных состояния Perl 5.10? - PullRequest
8 голосов
/ 03 марта 2009

В Perl 5.10 я могу сказать:

sub foo () {
  state $x = 1;
  say $x++;
}

foo();
foo();
foo();

... и он распечатает:

1
2
3

Есть ли у Python что-то подобное?

Ответы [ 11 ]

0 голосов
/ 24 марта 2009

Вот еще один грязный дешевый способ сделать это, это вариант ответа Триптиха, но с использованием декораторов

def static_var( name, value ):
    def dec( function ):
        setattr( function, name, value )
        return function
    return dec


@static_var( 'counter', 0 )
def counting_function():
    counting_function.counter = counting_function.counter + 1
    print counting_function.counter



"""
>>> counting_function()
1
>>> counting_function()
2
>>> counting_function()
3
>>> counting_function()
4
>>> counting_function()
5
>>> 
"""    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...