Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
75 views
in Technique[技术] by (71.8m points)

python - Passing global as a reference

I have a situation similar to this:

x = 10
y = 20
z = 30

def check_x():
 global x
 if something:
    x = x + 10

def check_y():
 global y
 if something:
    y = y + 15

def check_z():
 global z
 if something:
    z = z + 20

How can I achieve to refactor in order to have a situation lik this:

x = 10
y = 20
z = 30

def check(var, adding):
     global ??
     if something:
        ?? = ?? + adding


check(x, 10)
check(y, 15)
check(z, 20)
    

Basically, I can't refer to a given global variable in the general function.

question from:https://stackoverflow.com/questions/65884525/passing-global-as-a-reference

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can access the globals() dict, and pass a str as argument:

>>> x = 10

>>> def check_x(glb, adding):
        if glb in globals():
            globals()[glb] += adding

>>> check_x('x', 10)
>>> x
20

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...