Sortir d'un sous programme sous condition en python

c’est pas bien identé et prénom n’est pas la même chose que prenom (é et e)

C’est une erreur de frappe, prenom est bien écrit 3 fois sans accent

essai ça :

prenom = "yoann"

def fonction():
    global prenom
    print(prenom)
    

fonction()

prenom ="marina"

fonction()

Ca fonctionne… :thinking: :thinking: :thinking: :thinking:

Faut que j’invetigue… je dois avoir une connerie

Est se que ca peu être le fait que j’ai un fichier avec toutes les fonctions et l’autre qui appel les fonctions ?

ce serait plus jolie de faire comme ça
sans global …

prenom = "yoann"

def fonction(local):
    print(local)
    

fonction(prenom)

prenom ="marina"

fonction(prenom)

J’ai un fichier avec ca :

import requests, json, codecs

import fonctions
from fonctions import *

VariableToken="toto"

fsite_id (access_token)

if VariableToken == "Nok":
	

et un autre avec ma fonction qui se nome fonctions.py:

import requests, json, codecs

	
def fsite_id(faccess_token):
	global site_id
	global VariableToken
	........
	if "unauthorized" in response_site_id:
		print ("token Nok de parametre")
		VariableToken = "Nok"
	else:	
		VariableToken = "ok"
		........
		print(site_id)

après exécution du script, VariableToken contient toujours « toto »… Alors qu’il est bien déclaré en variable GLOBAL

Edit : je vien d’essayer en mettant ma fonction dans le fichier principal, la ou est déclaré la variable, et cela fonctionne bien…

Comment faire pour que cela fonctionne dans différent fichier ? c’est le principe d’une variable global non ?

Je me répond, j’ai trouvé la solution

Une variable globale n’est global que dans un module, un fichier…
Quand comme moi on a 2 Fichiers il faut appeler la variable de l’autre fichier en la notant ainsi: NomFichier.NomVariable, ca donne ca dans mon Code :

import requests, json, codecs

import fonctions

VariableToken="toto"

fsite_id (access_token)

if fonctions.VariableToken == "Nok":

et dans le fichier des fonction rien de particulier à faire:

def fsite_id(faccess_token):
	global site_id
	global VariableToken
	........
	if "unauthorized" in response_site_id:
		print ("token Nok de parametre")
		VariableToken = "Nok"
	else:	
		VariableToken = "ok"
		........
		print(site_id)
1 « J'aime »

J’en comprend que en python, il est plutôt déconseiller de découper son programme en plusieurs fichier, car j’ai l’impression que ca complique le passage des variables global d’un fichier à l’autre, c’est bien ca ?

Comment faire du coup si l’on veu s’y retrouver dans un programme assez long ?

Merci à vous

Il n’est pas déconseillé de découper son programme, au contraire. Il est déconseillé d’utiliser des variables globales.

import requests, json, codecs
import fonctions


VariableToken=fsite_id (access_token)
if VariableToken == "Nok":
 ....
def fsite_id(faccess_token):
		........
	if "unauthorized" in response_site_id:
		print ("token Nok de parametre")
		return "Nok"
	else:	
		return "Ok"
		........

C’est un peut l’idée que j’ai présentée ici :

Oups. Pas faux :wink:

Mais j’ai l’impression, à la vue de son dernier commentaire, que le message n’est pas passé :wink:

Bonjour @dede3828

Maintenant que ce sujet va être fermé, je ne trouve pas normal de vous être attribué la solution de cette discussion alors que vous n’avez fait qu’appliquer ce que @olive vous a proposé.
Le minimum aurait été de le remercier en lui donnant la coche solution.

Je ne vois pas non plus le lien entre la 1ère question et la solution donnée.
La solution doit être celle en rapport avec la question posée dans le 1er post.

1 « J'aime »

C’est pour ça @dede3828 que tu doit poser qu’une question et faire un nouveau sujet pour les autres.
Si non ça aide pas les lecteur du forum !

Un sujet, une question … des réponses … , une solution !

1 « J'aime »

J’ai changer la solution du post… désoler si j’ai froisser du monde, ce n’était pas voulu.

Sinon @olive, je pense ne pas tout avoir compris à la solution que tu m’as donner… je vai approfondir.

Sinon pour un sujet une question, une reponse, vous êtes sur que à force ca ne va pas faire trop de sujet ?

Ca ne me dérange pas, au contraire, c’est plus claire.

1 « J'aime »

Bonjour,

Non car cela permet une meilleur lisibilité et une meilleur recherche

Bonne conclusion :wink:

Dans le programme que tu as écrit :

VariableToken=fsite_id (access_token) if VariableToken == "Nok":

tu affectes le résultat de la fonction à VariableToken ?

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.