python newbie
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Sun Nov 4 09:04:07 EST 2007
Bjoern Schliessmann a écrit :
> Bruno Desthuilliers wrote:
>
>>Bjoern Schliessmann a écrit :
>
>
>>>You can't just declare in Python, you always define objects (and
>>>bind a name to them).
>>
>>def toto():
>> global p
>> p = 42
>>
>>Here I declared 'x' as global without defining it.
>
>
> Ah well, someone had to notice it ...
>
> BTW, where's x? :)
Sorry. s/x/p/g, of course.
>
>>>Yes, globals need to be defined before you
>>>can access them using "global".
>>
>>For which definition of 'defined' ?
>
>
> to define a name: to bind an object to a name
Then - according to this definition - your assertion is false.
>
>> >>> p
>>Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>>NameError: name 'p' is not defined
>> >>> toto()
>> >>> p
>>42
>> >>>
>
>
> Easy, p = 42 is a definition.
Yes, but it came *after* the global statement. So the global statement
*is* a kind of declaration, and the 'subject' of this declaration
doesn't need to be previously defined.
>
>>But anyway: in Python, everything's an object, so the only
>>thing that makes functions a bit specials is that they are
>>callable - as are classes, methods, and every instance of a class
>>implementing __call__ FWIW. So saying 'variables holds data,
>>functions do stuff' is unapplyiable to Python.
>
>
> I don't think so. Even if everything is an object, there is still a
> concept behind the words "function" and "variable".
f = lambda x: x+2
def toto(c):
return c(21)
toto(f)
What's f ? A function or a variable ?-)
More information about the Python-list
mailing list