<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 16 February 2013 03:21, Jason Grout <span dir="ltr">&lt;<a href="mailto:jason-sage@creativetrax.com" target="_blank">jason-sage@creativetrax.com</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Line and cell magics are normal python functions that take a string as<br>
their first input.  The string is either the rest of the line, or if<br>
there is no discernible string on the rest of the line, the string is<br>
taken as the rest of the cell.  As an example:<br>
<br>
%timeit(runs=10) 2+3<br>
<br>
which gets translated to time(&quot;2+3&quot;, runs=10)<br>
<br>
A cell magic is exactly the same function, only it is invoked by putting<br>
the string on the following lines, rather than on the same line, so the<br>
string is taken as the remainder of the cell:<br>
<br>
%timeit(runs=10)<br>
2+3<br>
5+6<br>
<br>
which gets translated to timeit(&quot;2+3\n5+6&quot;, runs=10)</div></blockquote></div><br></div><div class="gmail_extra">As you noted in a later e-mail, we&#39;re not about to break backwards compatibility, but it&#39;s worth thinking about the syntax. Here&#39;s my perspective on magics:<br>


<br></div><div class="gmail_extra">- As Fernando says, they started off as commands with a deliberately shell-like syntax, and many still work like this, e.g. %cd or %run.<br></div><div class="gmail_extra">- A couple of line magics accepted a Python statement as an argument (%timeit, %prun). This is a convenient shorthand for functions that accept code as a string.<br>


</div><div class="gmail_extra">- After the development of the notebook, magics were extended to include cell magics, which are conceptually much more like your idea of &#39;string decorators&#39;. A primary use has been to include code written in other languages.<br>


<br></div><div class="gmail_extra">Arguably, the newer uses don&#39;t have to fit into the same scheme as the original command-like magics. But neither do they have to be separate, and I think we&#39;re better off supporting one flexible scheme than adding a second, incompatible scheme for cell magics.<br>

<br></div><div class="gmail_extra">Best wishes,<br>Thomas<br></div></div>