I need to keep the values of my variables for other scripts to use.
Python doesn’t have really a concept of hidden/private variables (other convention-based approach).
If you have a script somecode.py
that has in the top scope a variable called some_variable1
, then in othercode.py
you can
somecode.py:
some_variable1 = "Hello"
othercode.py
import somecode
print(somecode.some_variable1)
Assuming you have proper directory structure and everything can be found by the interpreter.
In Rhino/Grasshopper, you also have the option to save variables (and other object types) in the sticky dictionary. Simply put, it exists above the user scripts of the current session, and thus each script of the session can read from it or save to it.
some_script.py:
from scriptcontext import sticky
some_variable = "Hello World"
sticky["SomeVariable"] = some_variable # save to
other_script.py:
from scriptcontext import sticky
some_variable = None # default
if "SomeVariable" in sticky.keys(): # exists
some_variable = sticky["SomeVariable"] # fetch from
print some_variable
Imagine it kind of like a walky-talky or rather like how emailing works. some_script.py runs and puts essential information in the sticky dictionary. other_script.py fetches the information from the sticky dictionary, if it exists there.
Thanks! In this case it makes sense to just use Document User Text. Values get saved with Rhino file too to be reused later.