Why this code is working?

Mel mwilson at the-wire.com
Wed Jan 14 17:21:38 CET 2009


Hussein B wrote:

> On Jan 14, 11:55 am, Bruno Desthuilliers <bruno.
> 42.desthuilli... at websiteburo.invalid> wrote:
>> Hussein B a écrit :
>>
>> > Hey,
>> > Why this code is working?
>>
>> >>>> def f1( ):
>> > ...      x = 88
>> > ...      f2(x)
>> > ...
>> >>>> def f2(x):
>> > ...      print x
>> > ...
>> >>>> f1( )
>> > 88
>>
>> Well... Because it is correct ?
>>
>> What make you think it _shouldn't_ work ?
> 
> Because def2 is defined after def1 in an interpreted language, not
> compiled.

You don't have to know about f2 when f1 is compiled.  You only have to know
about f2 when f1 is called.

I predict that

def f1():
    n = 88
    f2 (n)
f1()
def f2 (x):
    print x


will *not* work.  Python won't consider the non-definition of f2 to be a
problem until you try to actually use it.

        Mel.




More information about the Python-list mailing list