<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, May 9, 2016 at 1:00 PM, M.-A. Lemburg <span dir="ltr"><<a href="mailto:mal@egenix.com" target="_blank">mal@egenix.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=""><div class="h5">On 09.05.2016 21:47, Guido van Rossum wrote:<br>
> On Mon, May 9, 2016 at 12:36 PM, Barry Warsaw <<a href="mailto:barry@python.org">barry@python.org</a>> wrote:<br>
>> On May 08, 2016, at 11:59 AM, Steven D'Aprano wrote:<br>
>>> I think it is preferable *not* to have boolean parameters at all.<br>
>>><br>
>>> I don't remember if this is Guido's name for it, but I remember him<br>
>>> expressing the guideline "No constant bool arguments". If you have an<br>
>>> argument which takes a bool, and is used solely to switch between two<br>
>>> different modes, and the caller will most likely call the function with<br>
>>> the argument as a constant known when writing the code (rather than<br>
>>> taking an expression or variable with value not known until runtime),<br>
>>> then it is usually better to split the function into two, one for<br>
>>> each mode.<br>
<br>
</div></div>This seems overly strict, e.g. it's not uncommon to have functions<br>
enable debugging, verbose processing or similar processing variants<br>
using a boolean parameter.<br></blockquote></div><br></div><div class="gmail_extra">But usually the call site values for those wouldn't be constant -- they'd be computed from a command line flag for example. The key part of the phrasing is "the caller will most likely call the function with the argument as a constant known when writing the code".<br><br></div><div class="gmail_extra">FWIW I disagree with the lead-in phrase "I think it is preferable *not* to have boolean parameters at all."</div><div class="gmail_extra"><br>-- <br><div class="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)</div>
</div></div>