Richard Hsu wrote: > code:- > > # Internal -- finish processing of end tag > def finish_endtag(self, tag): > if not tag: # <---- i am confused about this > found = len(self.stack) - 1 > if found < 0: > self.unknown_endtag(tag) # <---- and this > return > > I am a little confused as to what is intended by " if not tag: " > does it mean > if tag == None or tag == "": # ?
Technically, not quite. See http://docs.python.org/lib/truth.html In practice, tag will indeed be a string type (shouldn't ever be None), so 'tag == ""' would work just as well* as 'not tag'. However, it's cleaner and clearer to use the latter. * = barring some contrived custom string type > tag here is suppose to be a string. > > so the only way it will be True is when its either None or its "", then > we are essentially passing None or "" to self.unknown_endtag(tag) ?? Yes, a string of length zero will always be passed to unknown_endtag here. Answering your implicit question, there's no good reason to write it as "self.unknown_endtag(None)" instead. --Ben -- http://mail.python.org/mailman/listinfo/python-list