musings on static variables
Ben Bacarisse
ben.usenet at bsb.me.uk
Wed Sep 16 19:45:58 EDT 2020
ram at zedat.fu-berlin.de (Stefan Ram) writes:
> This C program use a local /static/ variable.
>
> main.c
>
> #include <stdio.h>
>
> int f( void )
> { static int i = 0;
> return i++; }
>
> int main( void )
> { printf( "%d\n", f() );
> printf( "%d\n", f() );
> printf( "%d\n", f() ); }
>
> transcript
>
> 0
> 1
> 2
>
> When asked how to do this in Python, sometimes people
> suggest to use a module variable for this, or to add "i"
> to "f" as an attribute, or maybe even to use some kind of
> closure. Another (more pythonic?) way to do this, would be:
>
> main.py
>
> def f_():
> i = 0
> while True:
> yield i
> i += 1
>
> f = f_()
> print( next( f ))
> print( next( f ))
> print( next( f ))
>
> transcript
>
> 0
> 1
> 2
def f(i = [0]):
i[0] += 1
return i[0]
print(f())
print(f())
print(f())
maybe? More than a bit yucky, though.
--
Ben.
More information about the Python-list
mailing list