<div class="gmail_quote">On 30 November 2011 13:09, Kevin Buchs <span dir="ltr">&lt;<a href="mailto:kevin.buchs@gmail.com">kevin.buchs@gmail.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>My understanding is the iPython runs %run commands in a new instance of python, but then the namespace of that instance is inherited by the iPython level namespace. With that, it would seem to matter little that the definition of a() is separated from the invocation. </div>

</blockquote><div><br>It&#39;s not a new instance of Python, but it is a new module, so it&#39;s a separate namespace. When the script finishes, the variables from that namespace are dumped in your interactive namespace, but that doesn&#39;t apply to variables created in its module namespace later on (which is what you&#39;re doing here).<br>

<br>A simple workaround if you do want to see those variables is to use %run -i x.py to run it directly in the main namespace.<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">


<div></div><div>The unusual thing is that I found this behavior is not present if the global variable is an integer or list. So far, I have <b>only seen this with a dictionary.</b></div></blockquote><div><br>That is unusual. Can I ask you to double check this? I&#39;ve tried with master and with 0.11, and I see the same behaviour (b is not in my namespace) with a dictionary, integer or list.<br>

<br>Thanks,<br>Thomas<br></div></div>