Résolue

Interactions locales et globales

# Fonctions

Bonjour,
ce que je ne comprends pas dans la vidéo c'est donc que la fonction agit sur une variabel globale non ? pourtant je pensais que cela n'était pas possible et que la fonction créait seulement une autre variable avec le même nom ?

Thibault houdon

Mentor

Salut Alexis,

Si tu n'as pas une variable avec le même nom dans ta fonction, alors tu peux effectivement utiliser et modifier une variable de ton espace global dans ta fonction.

Ça change dès que tu crées une variable avec le même nom : tu auras à ce moment deux variables distinctes : une dans l'espace globale, et une dans l'espace locale de ta fonction :

a = 5

def foo():
    print(a)  # Affiche 5
a = 5

def foo():
    a = 10
    print(a)  # Affiche 10

print(a)  # Affiche 5

Bonjour à tous,

Ma question est très similaire pour cette raison que je la poste ici:
J'ai cru comprendre qu'il étais mieux de nommer les variables dans une fonction differement des autres variable qui ce trouive à l'exterieur de la fonction.
Et comme j'aurais tendance à me tromper j'ai penser à les nommer de cette fàçon.
Et c'est en rajoutant un (f_nom_de_la_variable) :

def somme_deux_numero(f_nb1: float, f_nb2: float) -> float:
    return f_nb1 + f_nb2


def somme_trois_numero(f_nb1: float, f_nb2: float, f_nb3: float) -> float:
    return f_nb1 + f_nb2 + f_nb3


nb1 = 10.3
nb2 = 11.1
nb3 = 20

print(somme_deux_numero(nb1, nb2))


print(somme_trois_numero(nb1, nb2, nb3))

C'est idiot ou ?
Merci.

Thibault houdon

Mentor

Bonjour Claude,

Normalement, pas de problème à nommer tes variables de la même façon dans la fonction, car la portée est différente, la variable locale à la fonction ne va ainsi pas modifier / impacter ta variable dans l'espace global du script et vice versa.

Le plus important, c'est surtout de donner des noms explicites à tes variables. Je conseille d'éviter les raccourcis "nb" qui ne font que complexifier la lecture du code et ne changent pas grand chose aujourd'hui en terme de place avec nos IDE qui complètent tout pour nous ^^

Pour ton script je ferais donc :

def somme_deux_numero(nombre_01: float, nombre_02: float) -> float:
    return nombre_01 + nombre_02


nombre_01 = 10.3
nombre_02 = 11.1

print(somme_deux_numero(nombre_01, nombre_02))

Merci bien Thibault.

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.