J'ai essayé de modifier la valeur d'une chaîne à l'intérieur d'une fonction, comme ci-dessous:
>>> def appendFlag(target, value):
... target += value
... target += " "
...
>>> appendFlag
<function appendFlag at 0x102933398>
>>> appendFlag(m,"ok")
>>> m
''
Eh bien, il semble que la "cible" ne soit modifiée qu'au sein de la fonction, mais comment rendre la nouvelle valeur viable en dehors de la fonction? Merci.
Ceci est géré dans python en retournant.
def appendFlag(target, value):
target += value
target += " "
return target
vous pouvez l'utiliser comme ceci:
m = appendFlag(m,"ok")
vous pouvez même renvoyer plusieurs variables comme celle-ci:
def f(a,b):
a += 1
b += 1
return a,b
et utilisez-le comme ceci:
a,b = f(4,5)
Vous devez utiliser un objet qui peut être modifié
>>> m = []
>>> def appendFlag(target, value):
... target.append(value)
... target.append(" ")
...
>>> appendFlag(m, "ok")
>>> m
['ok', ' ']
Votre fonction doit renvoyer la nouvelle valeur. La variable target
n'a de portée que dans la fonction appendFlag
.
def appendFlag(target, value):
...
return target
m = appendFlag(m, "ok")
Pour que la valeur de m
soit mise à jour, vous devez return
la valeur concaténée et l'affecter à la variable m
:
def appendFlag(target, value):
target += value
target += " "
return target
print(appendFlag)
m = "hey"
m = appendFlag(m,"ok")
print(m)
SORTIE :
<function appendFlag at 0x000001423C99F268>
heyok
les variables à l'intérieur de la fonction n'ont que la portée de la fonction, si vous changez la valeur de la variable de l'intérieur de la fonction, elle ne se reflétera pas à l'extérieur de la fonction. si vous voulez changer la valeur de la variable globale m, mettez-la à jour depuis l'extérieur de la fonction comme suit
`def a(target, value):
target += value
target += " "
return target
m=''
m=a(m,'ok')
"