Function to avoid a global variable

ast ast at invalid
Tue Apr 28 03:54:03 EDT 2020


Le 28/04/2020 à 09:52, ast a écrit :
> Le 28/04/2020 à 09:39, Antoon Pardon a écrit :
>>
>>
>> Op 27/04/20 om 18:39 schreef Bob van der Poel:
>>> Thanks Chris!
>>>
>>> At least my code isn't (quite!) as bad as the xkcd example :)
>>>
>>> Guess my "concern" is using the initialized array in the function:
>>>
>>>     def myfunct(a, b, c=array[0,1,2,3] )
>>>
>>> always feels like an abuse.
>>>
>>> Has anyone seriously considered implementing  a true static variable 
>>> in a
>>> function? Is there a PEP?
>>
>> You can emulate a static variable is with a closure.
>>
>> def make_parseStack():
>>
>>      depth = 0
>>
>>      def parseStack(inc):
>>         nonlocal depth
>>
>>          if depth > 50:
>>              ... report error and die nicely
>>          depth += inc
>>
>>      return parseStack
>>
>> parseStack = make_parseStack()
>>
> 
> funny !
> 
> So we found 4 different ways to handle a memory in a function
> 
> 1- Use a function parameter with a mutable default value
> 
> 2- Use a function attribute
> 
> 3- Use a callable object, and store your stuff inside an object attr
> 
> 4- Use a closure to emulate a static function variable
> 
> Any more ?
> 
> 

5- Use a global variable, of course


More information about the Python-list mailing list