Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed4a.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.007 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'tool,': 0.07; 'from:addr:ethan': 0.09; 'from:addr:stoneleaf.us': 0.09; 'from:name:ethan furman': 0.09; 'message-id:@stoneleaf.us': 0.09; 'statements': 0.09; 'tests,': 0.09; '~ethan~': 0.09; 'python': 0.11; 'intended.': 0.16; 'pythonistas': 0.16; 'removed,': 0.16; 'substitute': 0.16; 'exception': 0.16; 'wrote:': 0.18; 'all,': 0.19; 'not,': 0.20; 'coding': 0.22; 'header:User-Agent:1': 0.23; "aren't": 0.24; 'removed.': 0.24; 'question': 0.24; 'somewhere': 0.26; 'gets': 0.27; 'header:In-Reply-To:1': 0.27; 'point': 0.28; 'am,': 0.29; "doesn't": 0.30; 'assert': 0.31; 'run': 0.32; 'basic': 0.35; 'but': 0.35; 'there': 0.35; 'curious': 0.36; 'data,': 0.36; 'impression': 0.36; 'useful': 0.36; 'should': 0.36; 'unit': 0.37; 'easily': 0.37; 'to:addr:python-list': 0.38; 'bad': 0.39; 'to:addr:python.org': 0.39; 'truly': 0.60; 'most': 0.60; 'received:173': 0.61; 'specialized': 0.65; 'gotten': 0.74; '"active': 0.84; 'action.': 0.84; 'am.': 0.91; 'passive': 0.91 Date: Tue, 11 Nov 2014 12:08:16 -0800 From: Ethan Furman User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121010 Thunderbird/16.0.1 MIME-Version: 1.0 To: python-list@python.org Subject: Re: I love assert References: <96c138e4-ab95-4e5f-a0c8-e696b5a926bb@googlegroups.com> In-Reply-To: <96c138e4-ab95-4e5f-a0c8-e696b5a926bb@googlegroups.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list 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: 23 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1415736500 news.xs4all.nl 2953 [2001:888:2000:d::a6]:50244 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:80558 On 11/11/2014 11:40 AM, Peter Cacioppi wrote: > > I get the impression that most Pythonistas aren't as habituated with assert statements > as I am. Is that just a misimpression on my part? If not, is there a good reason to > assert less with Python than other languages? > > As far as I can tell, Python supports assert perfectly well. When run with the optimization > flagging, the asserts are truly removed. > > I think one needs to take care with some basic assert coding - it's not a substitute for > unit tests, it doesn't absolve you of normal exception responsibilities, and, most of all, > it should be used for passive inspection and not action. But given these guidelines, I > still find it very useful as "active comments". asserts are a specialized tool, easily abused. Sounds like you are using them exactly as intended. The key question to ask (if one is curious whether one is using assert correctly) is: if all the asserts are removed, and my programs gets bad data, will it keep going as if it had gotten good data? Or, will it fail at the point it should have failed, or will it fail somewhere else? -- ~Ethan~