Ivan El Mochilero
Ivan El Mochilero

Reputation: 81

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.

Upvotes: 3

Views: 44

Answers (1)

Sayandip Dutta
Sayandip Dutta

Reputation: 15872

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

Upvotes: 3

Related Questions