if I run one of following code variants
var1, var2 ='', ''
globals()['var1']='value1'
print(f'{var1=}, {var2=}')
var1, var2 ='', ''
locals()['var1']='value1'
print(f'{var1=}, {var2=}')
var1, var2 ='', ''
vars()['var1']='value1'
print(f'{var1=}, {var2=}')
all of them will return var1='value1', var2=''
, which is what I expect, but if I put them into a function, then they will not work any more.
def test():
var1, var2 ='', ''
globals()['var1']='value1'
return var1, var2
def test():
var1, var2 ='', ''
locals()['var1']='value1'
return var1, var2
def test():
var1, var2 ='', ''
vars()['var1']='value1'
return var1, var2
will return ('', '')
,any clue about makeing it also work in a function? thanks.
edit: thank to the link above, using globals(), locals(), vars() are often not good idea since locals() and vars() are immutable. For similar purposes, use a dict instead:
def test():
p = {'var1':'', 'var2':''}
p['var1']='value1'
return p['var1'], p['var2']