I'm having a puzzle here trying to figure out what goes on in the machine. This is my code:
import argparse, sys
from scitools.StringFunction import StringFunction
parser = argparse.ArgumentParser()
parser.add_argument('--f', '--function', type=str, default=None,\
help='Function', metavar='f')
parser.add_argument('--fn', '--filename', type=str, default=None,\
help='Filename', metavar='fn')
args = parser.parse_args()
print args.f and args.fn == None, type(args.fn), type(args.f)
if args.f and args.fn == str:
f = StringFunction(args.f); filename = args.fn
else:
print 'Failed to provide f, filename or both!'
sys.exit(1)
Running: --f x**2 --fn somename
in terminal.
Now the print statement yields:
False <type 'str'> <type 'str'>
in my terminal, but the if test gives:
Failed to provide f, filename or both!
right afterwards! Why does this happen?