I admit I don't understand what is happening in the following snippit: def f(): t=var('t') t=5 a=2*t return a t=3;t;f();t 3 10 t
This was executed in a sagews cell I think that the t which is referenced in f should be a local variable. However the value of t outside of f is modified by the execution of f. I know this happens because of the statement t=var('t'). Apparently, varing a variable inside a procedure vars it outside the procedure too. Is this behavior correct? Thanks Carl On Thursday, September 30, 2010 at 11:06:21 AM UTC-5, Robert Bradshaw wrote: > > On Thu, Sep 30, 2010 at 3:07 AM, Walker <ebwa...@gmail.com <javascript:>> > wrote: > >> sage: x = "this is x" > >> sage: y = "this is y" > >> sage: z = "this is z" > >> sage: def f(): > >> ....: print x > >> ....: y = "new value" > >> ....: print y > >> ....: global z > >> ....: z = "new value" > >> ....: print z > >> ....: > >> > >> sage: f() > >> this is x > >> new value > >> new value > >> > >> sage: x, y, z > >> ('this is x', 'this is y', 'new value') > > > > Yes it's true, that's the behavior I was referring to. My problem was > > actually that I couldn't print a global variable inside a function > > before I made an assignment to it; the error was something like > > "Cannot istantiate a local variable before assigning it." and I didn't > > understand why I had to assign locally a global variable which had > > already been assigned globally. Anyway the keyword "global" solved my > > problem. > > Yep, a variable is either local or global throughout the entire function. > > - Robert > > -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscr...@googlegroups.com. To post to this group, send email to sage-support@googlegroups.com. Visit this group at https://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/d/optout.