<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, May 10, 2016 at 4:59 PM, Joseph Martinot-Lagarde <span dir="ltr"><<a href="mailto:contrebasse@gmail.com" target="_blank">contrebasse@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
> I meant that I disagreed in several cases with whether an example was Good<br>
or Bad and I couldn't figure out what rule you were using in your head to<br>
decide on Good/Bad, IOW what rule you were illustrating with these examples.<br>
<br>
</span>Alright, I'll add some explanation. I took an example already used in this<br>
thread to be more clear.<br>
<br>
    # Bad: no indication on what the boolean argument does.<br>
    process(data, True)<br>
<br>
    # Good: the boolean is used to indicate that errors are raised.<br>
    process(data, raise_errors=True)<br></blockquote><div><br></div><div>So far so good.<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
    # Good: the variable name is used to indicate what the argument means.<br>
    raise_errors=True<br>
    process(data, raise_errors)<br></blockquote><div><br></div><div>Not so sure. If the variable raise_errors were set to False the process() call could seem misleading.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
    # Meh: both the keyword and the variable name are used to indicate what<br>
the argument means. It's not really bad, but it adds no information while<br>
adding redundancy. This would happend if the keyword is required.<br>
    raise_errors=True<br>
    process(data, raise_errors=raise_errors)<br></blockquote><div><br></div><div>That's actually fine with me; there's often a reason to give the variable another name anyways.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
    # Bad: a variable name is used but it doesn't indicate anything on its<br>
meaning.<br>
    w=True<br>
    process(data, w)<br clear="all"></blockquote><div><br></div><div>All depends.<br><br></div><div>In any case the discussion was more about how to design the API in the first place than about what the call should look like. In particular, if the raise_errors parameter is nearly always given as the literal True or False, it might be better to have<br><br></div><div>  process(data)<br><br></div><div>and <br><br></div><div>  process_raising_errors(data)<br></div></div><br>-- <br><div class="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)</div>
</div></div>