Listes et fonctions

Fermé
Pierre54k - 7 sept. 2020 à 19:16
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 8 sept. 2020 à 07:41
Bonjour,

Configuration: Windows / Firefox 80.0


J'ai ce code

def func(j):
V.append(j*2)

V = [ ] # initialisation de listes
i=2
func(i)
print(V)

qui donne V=[4]
J'aurais plutôt pensé que cela donnerait V=[ ] Puisque V est une variable globale qui ne peut être modifiée par une fonction

Par contre

def func(j):
A=[ ]
A.append(j*2)

V = [ ] # initialisation de listes
i=2
func(i)
print(V)

donne bien V=[ ] Et là je retrouve ce que j'ai appris sur variables locales/globales

Si vous pouvez m'expliquer.., je vous en serait reconnaissant

3 réponses

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
7 sept. 2020 à 19:37
bonjour,
si tu pouvais utiliser les balises de code, nous t'en serions reconnaissants: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
7 sept. 2020 à 19:52
je pense que tu dois continuer à étudier et à comprendre.
un exemple un peu plus compliqué:
def f(): 
    s = "I love London!"
    L.append("I love London!")
    print("dans la fonction: ",s,L) 

s = "I love Paris"
L=["I love Paris"]
f()
print("après la fonction: ",s,L)
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
7 sept. 2020 à 20:24
ou ceci:
def f(): 
    s = "I love London!"
    V.append("I love London!")
    L = [ "I love London"]
    print("s dans la fonction: ",s)
    print("L dans la fonction: ",L)
    print("V dans la fonction: ",V)

s = "I love Paris"
V=["I love Paris"]
L = [ "I love Paris"]
print("s avant la fonction: ",s)
print("L avant la fonction: ",L)
print("V avant la fonction: ",V)
f()
print("s après la fonction: ",s)
print("L après la fonction: ",L)
0
Rebonjour,
J'ai modifié comme demandé
Configuration: Windows / Firefox 80.0


J'ai ce code

def func(j):
V.append(j*2)

V = [ ] # initialisation de listes
i=2
func(i)
print(V)


qui donne V=[4]
J'aurais plutôt pensé que cela donnerait V=[ ] Puisque V est une variable globale qui ne peut être modifiée par une fonction

Par contre

def func(j):
A=[ ]
A.append(j*2)

V = [ ] # initialisation de listes
i=2
func(i)
print(V)


donne bien V=[ ] Et là je retrouve ce que j'ai appris sur variables locales/globales

Si vous pouvez m'expliquer.., je vous en serait reconnaissant
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
7 sept. 2020 à 20:23
V n'est pas modifiée par la fonction. Son contenu est modifié, cependant.
0
Si dans une fonction on applique une méthode à un objet paramètre, le paramètre est "modifié"
tandis que si on attribue une valeur à l'objet, c'est modifié en local dans le corps de la fonction
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
Modifié le 8 sept. 2020 à 07:41
peux-tu alors marquer la discussion comme résolue?
0