On 2/21/14 10:28 PM, Steven D'Aprano wrote:
On Fri, 21 Feb 2014 07:13:25 -0500, Ned Batchelder wrote:
On 2/21/14 2:23 AM, dieter wrote:
Sam<lightai...@gmail.com> writes:
I need to pass a global variable into a python function.
Python does not really have the concept "variable".
What appears to be a variable is in fact only the binding of an object
to a name. If you assign something to a variable, all you do is binding
a different object to the name.
Man, do I hate this idea that Python has no variables. It has variables
(names associated with values, and the values can change over the course
of the program), they just don't work the same as C or Fortran
variables. In fact, they work exactly the same as Javascript or Ruby
variables.
I sympathise with your view. It seems quite ridiculous to claim that
Python has no variables. If it has no variables, what on earth does it
mean when we say "x = 42"?
But the very ridiculousness is what gives it the attention-grabbing power
that makes it a useful meme. "Python variables don't behave like C
variables" might be true, but it's also wish-washy and forgettable.
In my own case, I never quite got Python's name binding semantics until I
was introduced to the "Python has no variables" meme. That got my
attention long enough to listen to the actual message: my assumptions
about how variables behave was based on Pascal semantics, and Python
doesn't quite follow the same rules. Consequently, if I implicitly define
"variable" to mean "Pascal variables", as I had been, then Python has no
variables, it has these things called "name bindings".
That's when I got it.
I went through a phase where I too insisted that Python had no variables.
But then my natural laziness asserted itself, and I decided that the word
"variable" is too useful to always reject it (and besides, C- and Pascal-
like languages don't have a monopoly on the word "variable"). Now, I use
the terms "variable" or "reference" or "name binding" as I feel makes the
most sense in context, depending on my best guess of the risk of
misunderstanding or confusion.
This is an interesting perspective, thanks.
I think it might be that the OP's question, "Can a global variable be
passed into a function", really had nothing to do with the
name/value/variable distinction, and we've done it again: taken a simple
question and spun off into pedantry and trivia.
--
Ned Batchelder, http://nedbatchelder.com
--
https://mail.python.org/mailman/listinfo/python-list