Can global variable be passed into Python function?
Marko Rauhamaa
marko at pacujo.net
Fri Feb 21 05:10:56 EST 2014
Jussi Piitulainen <jpiitula at ling.helsinki.fi>:
> In alleged contrast, the observable behaviour of languages that "have
> variables" is the same. This is not considered confusing by the people
> who insist that there are no variables in Python.
But of course there are variables in Python:
By “frozen” we mean that all local state is retained, including the
current bindings of local variables, [...] (<URL:
http://docs.python.org/3.2/reference/simple_stmts.html
#the-yield-statement>)
The public names defined by a module are determined by checking the
module’s namespace for a variable named __all__ (<URL:
http://docs.python.org/3.2/reference/simple_stmts.html
#the-import-statement>)
It would be impossible to assign to a global variable without global
(<URL: http://docs.python.org/3.2/reference/simple_stmts.html
#the-global-statement>)
etc etc.
However, your point about "observable behavior" is key, and Python users
of all people should get the principle (as it is related to duck
typing).
> Python indeed does not pass variables (and this is a relevant), but
> neither do the other languages that "have variables".
Maybe the idea comes from the fact that you can't easily pass a
variable to a function for modification.
Consider this C function:
void make_printable(const char **ref)
{
if (!*ref)
*ref = "<NULL>";
}
which allows:
make_printable(&x);
make_printable(&s->name);
make_printable(&a[i]);
Marko
More information about the Python-list
mailing list