On Sun, Oct 26, 2014 at 10:53 AM, Ben Finney <ben+pyt...@benfinney.id.au> wrote: > Dan Stromberg <drsali...@gmail.com> writes: > >> EG, if I have 3 mutually exclusive command line options, I'll do >> something like: >> >> if option_a + option_b + option_c != 1: >> sys.stderr.write('{}: -a, -b and -c are mutually >> exclusive\n'.format(sys.argv[0])) > > That is an excellent illustration of why exploiting this accidental > property of True and False leads to obfuscated code. The above test > gives me no clue that we're operating on boolean values, nor that we're > testing for exclusive options.
Would it be more readable thus? if len([opt for opt in (option_a, option_b, option_c) if opt]) != 1: Because that's what it's doing. I think treating bools as numbers is fine. Matter of opinion I guess. ChrisA -- https://mail.python.org/mailman/listinfo/python-list