newbie questions

Adam DePrince adam at cognitcorp.com
Mon Dec 13 14:03:54 EST 2004


On Mon, 2004-12-13 at 11:30, houbahop -->
> thanks, very usefull answer.
> 
> 
> > Immutable types (e.g. strings, numbers, tuples) are generally returned 
> > directly from functions, rather than returned as 'output parameters'. The 
> > ability to return multiple values easily (via "return a, b, c" & "x, y, z 
> > = myfunc()" generally eliminates the need for 'by reference' output 
> > parameters as used by C, C++, Java and the like.
> > P.S. If you *really*, *really*, *really* want to fake output parameters, 
> > just wrap them in a list:
> 
>  return multiple values is ok, I usualy use a function only to return one 
> value, for exemple : value=IsSomething(), returning true, to include that in 
> an if statement : if (isSomething(blabla) ) ... but It's not a problem to 
> change that habit. and as I have read somewhere about python : "Explicit is 
> better than implicit"
> 
> Dominique.

I think your interpretation of the the "explicit vs. implicit" quote
might be confusing in this case.  Certainly:

x = 0 
def a():
	something = 1
	somethingelse = 2
	global x
	x = something
	return somethingelse

y = a()
print x,y 

To say "we are explicitly setting X" in a is wrong.  We are returning 1
and 2.  We return 2 explicitly.  We return 1 by side effect.  

If we want to explicitly return both, then:

def a():
	something = 1
	somethingelse = 2 
	return something,somethingelse

x,y = a()

This makes the code clear and easy to understand.  

Navré je ne pas répondre en français.

- Adam DePrince




More information about the Python-list mailing list