Ok, I'll explain why I wanted to test if the value was a boolean I have a program that generates HTML tags with attributes. The principle is that TAG('text',arg1=val1,arg2=val2) generates <TAG arg1="val1" arg2="val2">text</TAG>
For HTML attributes that don't have an explicit value (such as the SELECTED attribute in OPTION) the keyword argument to the function must have the value True My program has a class for each tag, all derived from a generic TAG class whose __init__ method takes the arguments : def __init__(self, innerHTML="", **attrs): I have to handle differently the cases where the value is a boolean or another type: - if it's a boolean then if the value is True, generate the argument name ; if the value is False, don't generate anything - if it's not a boolean, generate arg="val". Specifically, it val is 0, generate val = "0" Testing with "if v:" as suggested would fail for val = 0 Anyway, I exposed my silly "if v in [True,False]" just to give my opinion that I found confusing that 0 in [True,False] or (boolean type checking set aside) 0 in [1,range(2),False,'text'] return True Regards, Pierre -- http://mail.python.org/mailman/listinfo/python-list