On Tuesday, November 24, 2015 at 7:57:54 AM UTC-5, Marko Rauhamaa wrote:
> Antoon Pardon <antoon.par...@rece.vub.ac.be>:
> 
> > You then switching to talking about objects, just gives the impression
> > that object is a synonym for value.
> 
> It isn't?

We are tangled up in another terminology conflict.  The word "value" is
being used in two different senses. It's understandable that this results
in confusion.  Neither use is incorrect, we just have to understand that
there are multiple meanings, and clarify where the meaning is uncertain.

1) In English, "value" means something like, what is this equal to? There
isn't another good word to use in place of "value" here. We might awkwardly
use the word "equivalence" as a synonym.  I'll use the word "evalue" (short
for "equal value" or "equivalence value" or "English value"). The ==
operator is useful for testing whether two values are "the same evalue".
In this sense, the expression "[]" always evaluates to the same value,
an empty list:

    >>> a = []
    >>> b = []
    >>> a == b
    True

2) In Python, "value" means, what object does a name refer to, or what
object did an evaluation produce.  We could use "referent" as a
synonym for this meaning.  The Python operator "is" tests whether two
values are the same referent, or, the same object. In this sense, "[]" 
always evaluates to a different value, because you get a new empty list
each time:

    >>> a = []
    >>> b = []
    >>> a is b
    False

Mutable objects are complicated because the same referent (object) can
change its evalue over time.

The confusion over mutable default arguments arises because the
defaulted argument always gets the same referent, but it might not
always be the same evalue.

--Ned.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to