On 2011-05-30, at 20:52 , Benjamin Kaplan wrote:

> On Mon, May 30, 2011 at 5:28 PM, Henry Olders <henry.old...@mcgill.ca> wrote:
>> 
>> On 2011-05-29, at 4:30 , Henry Olders wrote:
>> 
> 
> Python doesn't have true globals. When we say "global" what we mean is
> "module or built-in". Also, consider this code
> 
> from math import sin
> def redundant_sin(x) :
>    return sin(x)
> 
> In Python, everything is an object. That includes functions.  By your
> definition, that function would either have to be written as
> def redundant_sin(sin, x) :
> and you would have to pass the function in every time you wanted to
> call it or have a "global sin" declaration in your function. And you
> would need to do that for every single function that you call in your
> function body.
> 
I don't believe so. Within redundant_sin, x is local, so if I change x, it will 
not change any objects named x outside of the function. As far as sin is 
concerned, if it were passed to redundant_sin via the parameter list, then it 
would be local, but otherwise sin would be looked for in the function 
definition; if not found there, it would be looked for in the module, where it 
would be found. I am not suggesting any changes to how names are looked up or 
scoped.

Henry
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to