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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
premier lancement
[ 1,2,3]
deuxieme lancement
[ 4,5,6]
et j'obtiens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ...