0
votes

Comment changer N Variable globale distincte à l'aide de la fonction avec les paramètres de Python?

def change(a):
   a=4
print('1:')
c=3
print('Value before changing',c)
change(c)
print('Value after changing',c)
print('2:')
d=6
print('Value before changing',d)
change(d)
print('Value after changing',d)
print('3:')
e=7
print('Value before changing',e)
change(e)
print('Value after changing',e)
I want to change n distinct global variables. Eg: I want to change c,d and e global variables using function by passing it as a argument. How can I do so?

2 commentaires

Vous devez dire changer qu'ils sont des variables globales. (Et réparer votre indentation.)


Note, ce n'est généralement pas une bonne chose, l'état mondial mutable est mauvais


3 Réponses :


1
votes

edit: strong>

Ma réponse originale n'aurait pas travaillé. Alors voici ma nouvelle réponse. Premièrement, vous aurez besoin d'une fonction pour obtenir le nom de la variable. Cela peut être fait avec l'emballage Inspecter CODE> SEL, P>

def change(a):
  global a
  a = 4


3 commentaires

Mais je veux changer de variables globales plusieurs fois pas une ou deux fois. Selon votre réponse, je dois mettre à jour ma fonction chaque fois que je change de nouvelle variable globale.


S'il vous plaît suggérer une fonction constante


@Pratikgoud j'ai mis à jour ma réponse. Cela devrait fonctionner maintenant



0
votes

Le mot-clé global em> indique à la fonction qu'il existe déjà une variable de ce nom, définie en dehors de la portée actuelle. C'est dans, quels appels Python, la portée mondiale (pensez la portée du fichier Python).

>>> def change(a, value=4):
        global a
        a = value

>>> x = 3
>>> change(x)
# x = 4 


1 commentaires

Il ressort: Erreur de syntaxe: Nom 'A' est le paramètre et global.



0
votes

J'ai mis à jour ma réponse précédente afin de pouvoir fonctionner, mais voici une méthode alternative.

def change(**kwargs):
    globals().update(kwargs)

x = 3
change(x=4) # the global value of 'x' is now 4


1 commentaires

Merci @marcus weinberger