Path: csiph.com!x330-a1.tempe.blueboxinc.net!feeder1.hal-mli.net!feeder.news-service.com!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.002 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'int': 0.05; 'type,': 0.07; '*name*': 0.09; 'bool': 0.09; 'myself,': 0.09; 'object.': 0.09; 'sun,': 0.09; 'type;': 0.09; 'pm,': 0.11; '>>>': 0.12; 'am,': 0.14; 'wrote:': 0.14; 'backwards.': 0.16; 'boolean': 0.16; 'constructor.': 0.16; 'finney': 0.16; 'subject:() ': 0.16; 'subject:function': 0.16; 'cc:no real name:2**0': 0.20; 'cc:2**0': 0.20; 'header:In-Reply-To:1': 0.22; 'cc:addr:python-list': 0.22; 'curious': 0.23; 'subject:code': 0.23; "didn't": 0.25; 'calling': 0.25; 'checked': 0.25; 'point,': 0.25; 'equivalent': 0.26; 'function': 0.27; 'daniel': 0.29; "won't": 0.30; 'cc:addr:python.org': 0.31; '17,': 0.31; "i've": 0.33; 'expression': 0.33; 'words,': 0.33; "isn't": 0.34; 'uses': 0.34; 'received:192.168.1': 0.34; 'received:192': 0.34; 'got': 0.34; 'print': 0.35; 'question': 0.35; 'header:User-Agent:1': 0.35; 'else': 0.37; 'received:192.168': 0.37; '8bit%:12': 0.38; 'apr': 0.38; 'but': 0.38; 'pretty': 0.38; 'sources': 0.39; 'necessarily': 0.40; 'charset:windows-1252': 0.61; '2011': 0.62; 'miss': 0.68; 'received:perfora.net': 0.68; 'reply-to:no real name:2**0': 0.72; 'header:Reply-To:1': 0.72; '02:59': 0.84; 'received:74.208.4.194': 0.84; 'no:': 0.91 Date: Sun, 17 Apr 2011 21:46:37 -0400 From: Dave Angel User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14) Gecko/20110223 Thunderbird/3.1.8 MIME-Version: 1.0 To: Daniel Kluev Subject: Re: Re: Equivalent code to the bool() built-in function References: <4da9fb0b$0$13696$426a74cc@news.free.fr> <87k4etho6e.fsf@benfinney.id.au> In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit X-Provags-ID: V02:K0:fOJv8Krz4BHhQ+TYb+joqtDUE0fEnddKLArXJ+WrgDj 46SifErT/r5RcL5NzXT2wdqM2ElIyhnM+51oSVFn7kABC+IWT+ PPCD0Zm2jNeVLm9FWV43oMmZlAeSsT/ynn2We9pO+rXnulpnlI cMUIY3ysg4Q0gr/8EiYw0ITAGlBnRw10sAGxp/nNQc615kCXNX 23SnIDV4QlFHe22iXRS7w== Cc: python-list@python.org X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: davea@ieee.org List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 31 NNTP-Posting-Host: 82.94.164.166 X-Trace: 1303091228 news.xs4all.nl 81481 [::ffff:82.94.164.166]:39544 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:3451 On 01/-10/-28163 02:59 PM, Daniel Kluev wrote: > On Sun, Apr 17, 2011 at 8:38 AM, Ben Finney wrote: >> It won't look up the *name* ‘bool’, but it will use that object. Any >> boolean expression is going to be calling the built-in ‘bool’ type >> constructor. >> >> So the answer to the OP's question is no: the function isn't equivalent >> to the type, because the OP's ‘bool_equivalent’ function necessarily >> uses the built-in ‘bool’ type, while the reverse is not true. > > Actually, as I was curious myself, I've checked sources and found that > `True if x else False` will _not_ call bool(), it calls > PyObject_IsTrue() pretty much directly. You miss Ben's point, and got it backwards. He didn't say that the function will call the bool() type (constructor), but that it will use the bool type; in other words, it will return True or False. The one that may not is the function bool(). >>> print bool("143") True >>> bool = int >>> print bool("143") 143 Once bool has been reassigned, calling it may not return True or False any more. DaveA