Equivalent code to the bool() built-in function
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Tue Apr 19 04:43:22 EDT 2011
More information about the Python-list mailing list
Tue Apr 19 04:43:22 EDT 2011
- Previous message (by thread): Equivalent code to the bool() built-in function
- Next message (by thread): Equivalent code to the bool() built-in function
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tue, 19 Apr 2011 16:26:50 +1000, Chris Angelico wrote: > On Tue, Apr 19, 2011 at 4:23 PM, Kushal Kumaran > <kushal.kumaran+python at gmail.com> wrote: >>> if a + b + c + d != 1: >>> raise ValueError("Exactly one of a, b, c or d must be true.") >>> >>> >> Unless you're sure all of a, b, c, and d are boolean values, an int >> with a negative value slipping in could result in the sum equaling 1, >> but more than one of the variables evaluating to True in boolean >> contexts. > > If they're all expressions, then you can easily guarantee that. *raises eyebrow* Either of these should do the job: sum(map(bool, (a, b, c, d))) sum(bool(x) for x in (a, b, c, d)) but I don't see how (arbitrary expression) + (another expression) + ... + (last expression) can have any guarantees applied. I mean, you can't even guarantee that they won't raise an exception. Can you explain what you mean? -- Steven
- Previous message (by thread): Equivalent code to the bool() built-in function
- Next message (by thread): Equivalent code to the bool() built-in function
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list