Python function returns:

Tim Chase python.list at tim.thechases.com
Thu May 4 08:45:13 EDT 2006


> In Python, there does not seem to be an easy way to have
> functions return multiple values except it can return a
> list such as: strHostname, nPortNumber, status =
> get_network_info (strIpAddress, strHostname, nPortNumber)
>  Am I missing something obvious? Is there a better, or
> more standard way to return values from functions?

This *is* the "better" and "standard" way to do it.  There 
are *worse* ways to emulate C/C++ if you want, but it takes 
being *more* obtruse.  Because certain objects are mutable, 
nothing[*] prevents you from doing something like

x = []
def foo(q):
	x.append(42)
foo(x)
print repr(x)

which will return that you've added "42" to your list. 
However, it's ugly and relies on side effects.

They Python way (that you deride) is much clearer.  Your 
input goes in the parameters, and your output gets assigned 
the way functions are intended to work.  Unambiguous.

I don't expect to call a sine function, and get the result 
in the parameter; rather I expect to get it as the result of 
the function.  Okay...unless I'm working in Assembly 
language (but that's one of many reasons *why* I choose 
Python ;)

Just a few thoughts,

-tkc
[*] nothing other than being given dirty looks by folks 
reading your code...









More information about the Python-list mailing list