newbie questions

Steven Bethard steven.bethard at
Sat Dec 11 20:47:56 CET 2004

houbahop wrote:
> Hello again everyone ,
> var2[:]=[] has solved my problem, and I don't understand why it is 
> programming by side effect.
> I don't think it's bad, look at this, it's what I've done :
> def Clear(lvar)
>     lvar[:]=[]
> def main (starting class)
>    var1=[]
>    var1.append('a')
>    Clear(var1)


In computer science, a side-effect is a property of a programming 
language function that it modifies some state other than its return value.

Given this definition, I think you're fine -- clearing the list isn't a 
side effect of the function; it is the purpose of the function.  Hence 
the function has no return value.[1]

Of course, in this simple case, I wouldn't be likely to write the clear 
function since the inline code is simpler and has less overhead:

def main()
     var1 = []
     var1[:] = []

or, since in this case, you only care about var1, you can just rebind it 
(and let Python garbage-collect the old list):

def main()
     var1 = []
     var1 = []


[1] Technically, all Python functions without a return statement return 
None, but for our purposes, we can consider a function like this to have 
"no return value".

More information about the Python-list mailing list