problème de portée de variable
bon le titre indique clairement mon problème
je suis sous python 3.1 et j'ai un soucis de porté de variable et de valeur par défaut de variable
j'ai simplifié mon code à l'extrême (le code en lui même est donc stupide ... mais identifie bien mon soucis
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
def list_path(p, l=[]):
"""return a list
p list
l list
"""
for i in p:
l.append(i)
return l
print('premier lancement')
print(list_path([1,2,3]))
print()
print('deuxieme lancement')
print(list_path([4,5,6])) |
je m'attendais à obtenir
Code:
1 2 3 4 5
|
premier lancement
[ 1,2,3]
deuxieme lancement
[ 4,5,6] |
et j'obtiens
Code:
1 2 3 4 5
|
premier lancement
[ 1,2,3]
deuxieme lancement
[ 1,2,3,4,5,6] |
cela devient plus drôle si j'écris cela comme ça
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
def list_path(p, l=""):
"""return a list
p list
l list
"""
for i in p:
l = l + str(i)
return l
print('premier lancement')
print(list_path([1,2,3]))
print()
print('deuxieme lancement')
print(list_path([4,5,6])) |
et là j'obtiens
Code:
1 2 3 4 5
|
premier lancement
[ 1,2,3]
deuxieme lancement
[ 4,5,6] |
la portabilité des variables dépends de la nature de la variable ?
je code en python depuis des années et c'est la première fois que je constate cela ...