On Monday, December 21, 2015, Carl Eberhart <carl.eberh...@gmail.com> wrote:

> 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?
>


It is definitely as intended and documented and not a bug.See the docs of
var.   Whether or not that design decision (by me from 2007) was a good
idea is less clear.



> 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> 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
> <javascript:_e(%7B%7D,'cvml','sage-support%2bunsubscr...@googlegroups.com');>
> .
> To post to this group, send email to sage-support@googlegroups.com
> <javascript:_e(%7B%7D,'cvml','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.
>


-- 
Sent from my massive iPhone 6 plus.

-- 
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.

Reply via email to