Interesting list Validity (True/False)

mensanator at aol.com mensanator at aol.com
Fri May 11 17:26:48 EDT 2007


On May 11, 3:36 pm, nufuh... at gmail.com wrote:
>  On May 11, 2:28 pm, nufuh... at gmail.com wrote:
>
>
>
>
>
>
>
> > > Hello all,
>
> > > First let me appologise if this has been answered but I could not find
> > > an acurate answer to this interesting problem.
>
> > > If the following is true:
> > >     C:\Python25\rg.py>python
> > >     Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32
> > > bit (Intel)] on
> > >     win32
> > >     Type "help", "copyright", "credits" or "license" for more
> > > information.
> > >     >>> [] == []
> > >     True
> > >     >>> ['-o'] == []
> > >     False
> > >     >>> ['-o'] == False
> > >     False
>
> > > Then why do I get the following results:
> > >     C:\Python25\rg.py>help.py -o
> > >     print arg ['-o']
> > >     type(arg): <type 'list'>
> > >     arg is True? False
> > >         help.py version 1.0 Copyright RDEG (c) 2007
> > >         ['-o'] is an unrecognized option.
> > >         Progam Exit (0)
>
> > > <python>
> > >     import sys
>
> > >     _ver_ = 1.00
>
> > >     if '-h' in sys.argv or '--help' in sys.argv:
> > >         print
> > >         print "    help.py Version", _ver_, "Copyright RDEG (c) 2007"
> > >         print '''
>
> > >         Options : -h, --help -- display this message
> > >             Progam Exit (0)'''
> > >         sys.exit(0)
> > >     else:
> > >         arg = sys.argv[1:]
> > >         print 'print arg', arg
> > >         print 'type(arg):', type(arg)
> > >         print 'arg is True?', arg == True
> > >         print "    help.py version", _ver_, "Copyright RDEG (c) 2007"
> > >         print "    ", arg, "is an unrecognized option."
> > >         print "    Progam Exit (0)"
> > >         sys.exit(0)
> > > </python>
>
> I hope this helps (I have tried to post this twice already but it
> seems to be going somewhere else) you help me.
>
> What I would like to happen is:
>     else:
>         arg = sys.argv[1:]
>         print 'print arg', arg
>         print 'type(arg):', type(arg)
>         print 'arg is True?', arg == True
>         if arg != True:
>             print "    No Option Provided"
>         print "    help.py version", _ver_, "Copyright RDEG (c) 2007"
>         print "    ", arg, "is an unrecognized option."
>         print "    Progam Exit (0)"
>         sys.exit(0)
>
> But as you can see by my output ['-o'] seems to be False as well as []
> so the if happens regardless.
>
> According to the "Book", ['-o'] should return True which should fail
> the if, no?

You're mistaking the porperties of an object for the object itself.

if arg:

tests the property (of being empty).

if arg==True:

tests the type property (whether a list is a boolean).

Change the code I gave above to be:

    print
    if arg:
        print 'The argument given was:',arg
    else:
        print 'No argument given'
    print

then you'll get

##    C:\python25\user>python arghhh!.py -o
##    print arg ['-o']
##    type(arg): <type 'list'>
##    arg is True? False
##
##    The argument given was: ['-o']
##
##        help.py version 1.0 Copyright RDEG (c) 2007
##         ['-o'] is an unrecognized option.
##        Progam Exit (0)
##
##    C:\python25\user>python arghhh!.py
##    print arg []
##    type(arg): <type 'list'>
##    arg is True? False
##
##    No argument given
##
##        help.py version 1.0 Copyright RDEG (c) 2007
##         [] is an unrecognized option.
##        Progam Exit (0)




More information about the Python-list mailing list