Steven D'Aprano added the comment:
I disagree that "aliasing" is more accurate.
We have a perfectly good name for symbols in Python: "name". A value (and that
includes functions) can have multiple names. It seems to me that if we're to
start distinguishing between names and aliases, then aliases have to be
different from names. And the way I understand "alias" is that it is another
symbol for a variable, not another symbol for the same value.
We wouldn't say that
x = 1
y = x
makes y an alias for x. y just happens to be a second name for the same value
that x currently has. There's no guarantee that they will stay the same.
Substitute a function object for the int 1, and you have the situation being
discussed in the tutorial.
I would expect that aliases should not be effected by rebinding:
x = 1
y = alias(x) # if such a thing existed
x = 2
assert y == 2
Obviously there's nothing in Python like that! This doesn't match Python's name
binding model at all.
I think that talking about a "general aliasing" mechanism is exactly wrong. I
think that the tutorial should emphasis the reality that functions are just
ordinary values, like ints and floats and dicts and lists, and not try to
indicate that there is something special or different about names bound to
functions:
def f(): ...
g = f
is no different from the x = y example earlier.
----------
nosy: +steven.daprano
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue28681>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com