Amit Yadav wrote: > How can simply typing > > print "hello world" > > work? > Like without including any header file or import statements how can it > work.
In Python 2 print is part of the syntax that the compiler knows, just like int or for (... ) {} in C. In Python 3 print is just a name, like len, say, in both py2 and py3. A name on the module level is looked up first in the module's namespace, and if it's not found in another special namespace that is built into the interpreter: >>> __builtins__ <module '__builtin__' (built-in)> >>> __builtins__.len is len True The unqualified name "len" is the same object as __builtins__.len because it is looked up there. When you overwrite it with your own name this will take precedence: >>> def len(x): return 42 ... >>> __builtins__.len is len False >>> len("abc") 42 OK that was probably a bad idea, let's remove our len() to see the built-in again: >>> del len >>> len("abc") 3 The built-in namespace is user-writeable: >>> __builtins__.spam = "ham" >>> spam 'ham' _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor