Default Value

Gary Herron gherron at digipen.edu
Wed Jun 19 15:57:48 EDT 2013


On 06/19/2013 12:17 PM, Ahmed Abdulshafy wrote:
> I'm reading the Python.org tutorial right now, and I found this part rather strange and incomprehensible to me>
>
> Important warning: The default value is evaluated only once. This makes a difference when the default is a mutable object such as a list, dictionary, or instances of most classes

This code:
> def f(a, L=[]):
>      L.append(a)
>      return L

does the same as this code:

M=[]
def f(a, L=M):
     L.append(a)
     return L

where it's slightly more obvious that the list is created once, and 
modified with each call to the function (or rather with each call to the 
function that does not supply its own value for L).

Gary Herron


>
> print(f(1))
> print(f(2))
> print(f(3))
>
> This will print
> [1]
> [1, 2]
> [1, 2, 3]
>
> How the list is retained between successive calls? And why?


-- 
Dr. Gary Herron
Department of Computer Science
DigiPen Institute of Technology
(425) 895-4418




More information about the Python-list mailing list