S'il vous plaît voir le code suivant:Les variables globales Mutable ne sont pas masquées dans les fonctions Python, n'est-ce pas?
def good():
foo[0] = 9 # why this foo isn't local variable who hides the global one
def bad():
foo = [9, 2, 3] # foo is local, who hides the global one
for func in [good, bad]:
foo = [1,2,3]
print('Before "{}": {}'.format(func.__name__, foo))
func()
print('After "{}": {}'.format(func.__name__, foo))
Le résultat est comme ci-dessous:
# python3 foo.py
Before "good": [1, 2, 3]
After "good": [9, 2, 3]
Before "bad" : [1, 2, 3]
After "bad" : [1, 2, 3]
Je suppose que vous avez raison. Pas de paramètres, pas de nouveau nom. – aXqd
Je suppose, mais pourquoi différer la logique entre le réglage et l'utilisation? Si c'est bien, vous devez également déclarer global foo, n'est-ce pas plus cohérent et empêcher l'utilisateur de tirer son propre pied? – liang