Can Python function return multiple data?

Grant Edwards invalid at invalid.invalid
Thu Jun 4 10:37:10 EDT 2015


On 2015-06-04, Marko Rauhamaa <marko at pacujo.net> wrote:
> Steven D'Aprano <steve at pearwood.info>:
>
>> But you still find a few people here and there who have been exposed
>> to Java foolishness, and will argue that Python is "pass by value,
>> where the value is an implementation dependent reference to the thing
>> that you thought was the value".
>
> Why fight terminology? Definitions can't be proved right or wrong.
>
> Anyway, I would say Python definitely is in the classic pass-by-value
> camp. Here's a simple test:
>
>    def f(x):
>        x = 3
>
>    y = 1
>    f(y)
>    print(y)
>
> If it prints 1, it's pass by value. If it prints 3, it's pass by
> reference.

Somebody else might just as honestly say that it's pass by reference:

def f(x):
    x[2] = 2;

x = ['a','b','c']
f(x)
print(x)

If it prints ['a','b','c'], it's pass by value.  If it's pass by
reference, it prints ['a', 'b', 2].

IMO, it's pass by reference.

But, discussing pass-by-this vs. pass-by-that without also discussing
the semantics of the assignment operator is rather pointless.  Not
that the pointlessness of an argument is going to slow down a
thread...

-- 
Grant Edwards               grant.b.edwards        Yow! I request a weekend in
                                  at               Havana with Phil Silvers!
                              gmail.com            



More information about the Python-list mailing list