<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Apr 13, 2014 at 2:56 AM, Chris Angelico <span dir="ltr"><<a href="mailto:rosuav@gmail.com" target="_blank">rosuav@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Sun, Apr 13, 2014 at 2:21 PM, Andrew Barnert<br>
<abarnert@yahoo.com.dmarc.invalid> wrote:<br>
> Of course the cost is that you don't get compile-time type checking. But for many programs, that type checking is nearly useless (at least the Java kind; the Haskell kind is more useful).<br>
><br>
<br>
</div>Aside: I have periodically had bugs where I omit the first argument of<br>
a function (in situations where, had it not been first, it would have<br>
been marked optional). In C, those sorts of bugs are often caught by<br>
the function signature; in Python, they can be, but only if the<br>
function takes a fixed number of args. For instance:<br>
<br>
void foo(target *destination, const char *msg, int blah=0, int blahblah=0)<br>
<br>
If you omit the destination, you get an error back straight away,<br>
because a string (const char *) can't be converted into a target. The<br>
equivalent in Python, though:<br></blockquote><div><br></div><div>No you don't! If you're stuck in C89 for one reason or another, all you get is a warning(which most programmers ignore anyway). C++ is much more strict in that regard.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
def foo(destination, msg, blah=0, blahblah=0):<br>
<br>
would happily assign the args one slot earlier, as long as I provided<br>
at least one of the optionals. But this is a fairly narrow case; if<br>
both those args were mandatory, the mere count of arguments would trip<br>
an error. (Albeit at run-time, not compile-time, but until Python goes<br>
to actually run the line of code, it can't know that this is the<br>
signature anyway.)<br>
<br>
ChrisA<br>
<br>
PS. Neat trick with dmarc.<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" target="_blank">http://python.org/psf/codeofconduct/</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Ryan<div><div>If anybody ever asks me why I prefer C++ to C, my answer will be simple: "It's becauseslejfp23(@#Q*(E*EIdc-SEGFAULT. Wait, I don't think that was nul-terminated."</div>

</div><div><br></div></div>
</div></div>