algorithmic modeling for Rhino
Hi,
I've been making a python script and noticed something that is funny that I don't recall happening previously.
Essentially, I define a variable and print(variable)
numbers = [1,2,3,4]
print(numbers)
hitting F5 returns
[1, 2, 3, 4, 5]
so I comment out the variable definition
#numbers = [1,2,3,4]
print(numbers)
hitting F5 still returns
[1, 2, 3, 4, 5]
This is making code editing really difficult, since I am using print to check values and I cannot trust what comes from it. I have a much larger script which is suffering the same situation:
(after hitting F5 and [Test] repeatedly)
Is this a bug or am I using this wrong. I swear I've never noticed this before.
Thanks,
Shane
Tags:
Hi Shane
the variable name 'numbers' is still linked to the list object [1, 2, 3, 4, 5], to change this behavior you've got to reassign the whole variables in the comment block to none, this behaviour happens because the garbage collection isn't called untill the python code is closed, so the memory is freed, but as long as this code lingers in th GHPython component the list object is still retained in your RAM,
maybe one way to get around this is to copy/past [along with the componenets linking to this code as parameters] the GHpython component and delete the older one
that shouldn't print the comments block anymore
Ah, that makes sense then. Thought I was going nuts. I have done a number of python scripts in GH, but I guess I never noticed until now.
As Anders mentions, we discussed this publicly and came to a slight change in behavior. This change is already implemented in the Rhino WIP. At this point, this will likely stay as it is in GhPython for Grasshopper 0.9.76.
Essentially, the variable will still stick around, because it is useful, when Grasshopper or the user re-runs the script; however, when the user clicks the 'Run/Test' button in Rhino WIP, the editor will remove all variables as though the script was run in a new scope for the first time. This will make finding bugs simpler, while at the same time allow to keep track of 'counters' and sticky variables.
I hope this explains the case. Thanks,
Giulio
--
Giulio Piacentino
for Robert McNeel & Associates
giulio@mcneel.com
I see, I guess I was used to using the component as a substitute IDE but had miraculously never noticed this behavior before. Good to know, thanks!
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by