environment/lib/python2.7/site-packages/IPython/core/prefilter.py
def handle(self, line_info):
        """Try to get some help for the object.

        obj? or ?obj   -> basic information.
        obj?? or ??obj -> more details.
        """
        normal_handler = self.prefilter_manager.get_handler_by_name('normal')
        line = line_info.line
        # We need to make sure that we don't process lines which would be
        # otherwise valid python, such as "x=1 # what?"
        try:
            codeop.compile_command(line)
        except SyntaxError:
            # We should only handle as help stuff which is NOT valid syntax
            if line[0]==ESC_HELP:
                line = line[1:]
            elif line[-1]==ESC_HELP:
                line = line[:-1]
            if line:
                #print 'line:<%r>' % line  # dbg
                self.shell.magic('pinfo %s' % line_info.ifun)
            else:
                self.shell.show_usage()
            return '' # Empty string is needed here!
        except:
            raise
            # Pass any other exceptions through to the normal handler
            return normal_handler.handle(line_info)
        else:
            # If the code compiles ok, we should handle it normally
            return normal_handler.handle(line_info)
def handle(self, line_info):
        normal_handler = self.prefilter_manager.get_handler_by_name('normal')
        line = line_info.line
        # We need to make sure that we don't process lines which would be
        # otherwise valid python, such as "x=1 # what?"
        try:
            codeop.compile_command(line)
        except SyntaxError:
            # We should only handle as help stuff which is NOT valid syntax
            if line[0]==ESC_HELP:
                line = line[1:]
            elif line[-1]==ESC_HELP:
                line = line[:-1]
            if line:
                #print 'line:<%r>' % line  # dbg
                self.shell.magic('pinfo %s' % line_info.ifun)
            else:
                self.shell.show_usage()
            return '' # Empty string is needed here!
        except:
            raise
            # Pass any other exceptions through to the normal handler
            return normal_handler.handle(line_info)
        else:
            # If the code compiles ok, we should handle it normally
            return normal_handler.handle(line_info)
def handle ( self , line_info ) : normal_handler = self . prefilter_manager . get_handler_by_name ( 'normal' ) line = line_info . line # We need to make sure that we don't process lines which would be # otherwise valid python, such as "x=1 # what?" try : codeop . compile_command ( line ) except SyntaxError : # We should only handle as help stuff which is NOT valid syntax if line [ 0 ] == ESC_HELP : line = line [ 1 : ] elif line [ - 1 ] == ESC_HELP : line = line [ : - 1 ] if line : #print 'line:<%r>' % line  # dbg self . shell . magic ( 'pinfo %s' % line_info . ifun ) else : self . shell . show_usage ( ) return '' # Empty string is needed here! except : raise # Pass any other exceptions through to the normal handler return normal_handler . handle ( line_info ) else : # If the code compiles ok, we should handle it normally return normal_handler . handle ( line_info )
Try to get some help for the object.

        obj? or ?obj   -> basic information.
        obj?? or ??obj -> more details.
Try to get some help for the object .