function - Why does sage treat local python variables as global? -


new sage , python, i'm not sure i'm abusing. i'm trying define following function acts on input list a, every time input function affects global value of a. how can make behave locally?

def listxgcd( ):     g,s,t=xgcd(a.pop(0),a.pop(0))     coeffs=[s,t]     while a!=[]:         g,s,t=xgcd(g,a.pop(0))         coeffs=[s*i in coeffs]         coeffs=coeffs+[t]     return coeffs 

i've tried setting b=a , substituting b everywhere doesn't work either don't understand. need declare sort of sage-y variable thing?

def listxgcd( ):     b=a     g,s,t=xgcd(b.pop(0),b.pop(0))     coeffs=[s,t]     while b!=[]:         g,s,t=xgcd(g,b.pop(0))         coeffs=[s*i in coeffs]         coeffs=coeffs+[t]     return coeffs 

much thanks!

you passing reference container object listxgcd function , function retrieves elements container using pop. not scope issue, fact there operating directly on container have passed function.

if don't want function modify container, make copy of it:

import copy def listxgcd( ain ):     = copy(ain)     ... 

or better, access elements using indexing, if container allows it:

... g,s,t=xgcd(a[0],a[1]) ... in range(2,len(a)):     g,s,t=xgcd(g,a[i])     ... 

Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -