Bonjour,
Voici un truc sur lequel je suis tombé et que je ne m'explique pas. C'est fait en version 2.7. Ça m'est arrivé dans un environnement MacOSX, mais je viens de le reproduire sous Pythonista, une application pour iPad (c'est ce que je copie-colle).
Voici le code, réduit à sa plus simple expression, bien sûr :
Qu'ai-je manqué ?
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 fonction(Z=False): ... xy_list = [ (0.,0.) ] ... if Z: ... z_list = [ 0. ] ... return xy_list, z_list if Z else xy_list ... >>> >>> fonction(True) ([(0.0, 0.0)], [0.0]) >>> >>> fonction(False) ([(0.0, 0.0)], [(0.0, 0.0)]) >>> >>> result = fonction(False) >>> id(result[0]), id(result[1]) (52130156, 52130156)
ÉDIT: l'appel de fonction sans argument (donc utilisation de la valeur par défaut) conduit au même résultat
ÉDIT 2: le return n'est apparemment pas en cause
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 >>> 1, 2 if False == False else 1 (1, 2) >>> 1, 2 if False == True else 1 (1, 1)
Partager