<div class="gmail_quote"><div>Hi, </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><font face="arial, helvetica, sans-serif"></font></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div><font face="'courier new', monospace">__import__('sys').exit()</font></div>

</blockquote><div>or</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><font face="'courier new', monospace">[i for i in range(2**100) if i < 1]</font></div>

</blockquote><div><div><font face="arial, helvetica, sans-serif"><br></font></div></div></blockquote><div>The execution is not in a server but in the user's machine/environment. If the user wants to do something like that, it would be the user's problem. Nothing prevents the user from doing the same things in a python process invoked by her, right?</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div>P.S.. Yes, that's valid scheme? So what? Redefining 'define' pretty much guarantees that the rest of your program will fail.<div>
<span style="font-family:monospace;font-size:13px;white-space:pre-wrap;background-color:rgb(240, 240, 240)"><pre style="margin-top:0px;margin-bottom:0px;padding-bottom:5px;padding-top:3px;padding-left:10px"><span style="line-height:13px !important;color:rgb(102, 204, 102)">(</span><span style="line-height:13px !important;color:rgb(177, 177, 0)">define</span><font color="#000066"> </font><span style="line-height:13px !important;color:rgb(177, 177, 0)">define</span><font color="#000066"> </font><span style="line-height:13px !important;color:rgb(204, 102, 204)">3</span><span style="line-height:13px !important;color:rgb(102, 204, 102)">)</span><font color="#000066">
</font><span style="line-height:13px !important;color:rgb(102, 204, 102)">(</span><span style="line-height:13px !important;color:rgb(177, 177, 0)">display</span><font color="#000066"> </font><span style="line-height:13px !important;color:rgb(102, 204, 102)">(</span><span style="line-height:13px !important;color:rgb(102, 204, 102)">*</span><font color="#000066"> </font><span style="line-height:13px !important;color:rgb(177, 177, 0)">define</span><font color="#000066"> </font><span style="line-height:13px !important;color:rgb(204, 102, 204)">5</span><span style="line-height:13px !important;color:rgb(102, 204, 102)">)</span><span style="line-height:13px !important;color:rgb(102, 204, 102)">)  </span><span style="line-height:13px !important">=> 15</span><font color="#000066">
</font><span style="line-height:13px !important;color:rgb(102, 204, 102)">(</span><span style="line-height:13px !important;color:rgb(177, 177, 0)">define</span><font color="#000066"> x </font><span style="line-height:13px !important;color:rgb(204, 102, 204)">4</span><span style="line-height:13px !important;color:rgb(102, 204, 102)">)  </span><span style="line-height:13px !important">=> FAIL</span></pre>


</span><div><font face="arial, helvetica, sans-serif">The fact that another language allows you to shoot yourself in the foot isn't a good argument that Python should allow that too.</font></div>

<div><font face="arial, helvetica, sans-serif"><br></font></div></div></div></div>
</blockquote></div>Yes, scheme does not have special syntax for 'keywords' but still allows keywords to be overridden. But nothing (but syntax highlighters) will break in Python by allowing keywords as identifiers, and so it is a less drastic change for Python.<div>
<br></div><div>Regards,</div><div>Krishnan</div>