I'm sure someone's already answered this, but I can't find it.
I have a script test.py who's sole purpose of existence is to place the variable var into the global namespace:
def test():
global var
var = 'stuff'
Here's what happens when I run test.py in ipython using %run, then run test(), and then try to access var.
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: %run test.py
In [2]: test()
In [3]: var
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-3-84ddba356ca3> in <module>()
----> 1 var
NameError: name 'var' is not defined
In [4]:
Any idea what's happening? Or how to generally bring it into the local namespace?
The %run command creates a separate namespace for global variables in the file. It also updates the IPython interactive namespace with all variables defined in the file after execution. So you can either call the function in your script so that the global variable gets created before the file finishes executing:
def test():
global var
var = 'stuff'
test()
or use %run -i:
-irun the file in IPython’s namespace instead of an empty one. This is useful if you are experimenting with code written in a text editor which depends on variables defined interactively.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With