Python: ouverture de fichier et fonction
jooshig
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
bonjour,
J'ai defini une fonction qui lit les lignes (issues du web, donc en html) contenues dans un fichier html f pour les transferer sans les balises dans un fichier papyr:
def transfMessage():
...i=1
...while i==1:
......rd = f.readline() # lecture de ligne
......if rd[-8:-2] == '<br />': # <- detecte une ligne interne du message
.........rdc = rd[0:-8] # elimination du EOL
......if rd[-9:-1] =='<br><br>': # <- detecte la derniere ligne du message
.........rdc = rd[0:-9] # elimination du EOL
.........i=0 # traduit que le message a ete entierement lu
......papyr.write(rdc + '\n')
L'instruction rd=f.readline() effectue la declaration d'une variable rd en tant que variable locale circonscrite a la fonction transfMessage. Ce qui arrive a cette variable locale rd ne retentit pas sur la variable exterieure rd prealablement existante, je l'ai verifie.
Jusque la rien d'anormal. Cela respecte les notions de variables locales/variables globales.
Par contre, je suis intrigue par le fait que l'instruction papyr.write(rdc+'\n') realise bien l'envoi de la valeur de rdc vers le fichier papyr qui est un fichier exterieur a la fonction.
En effet, le fait que l'ecriture de la valeur de rdc est effectivement realisee dans le fichier exterieur papyr signifie pour moi que papyr n'est pas considere comme un truc local circonscrit a la fonction.
Or, il n'y a pas, dans la definition de la fonction, de ligne definissant papyr comme untruc global , grace a la declaration 'global'.
Donc....je suis perplexe. Les fichiers sont ils une exception ? Sont-ils des trucs consideres comme globaux partout dans un programme meme si on ne les declare pas explicitement comme tels ?
merci d'avance pour toute reponse
J'ai defini une fonction qui lit les lignes (issues du web, donc en html) contenues dans un fichier html f pour les transferer sans les balises dans un fichier papyr:
def transfMessage():
...i=1
...while i==1:
......rd = f.readline() # lecture de ligne
......if rd[-8:-2] == '<br />': # <- detecte une ligne interne du message
.........rdc = rd[0:-8] # elimination du EOL
......if rd[-9:-1] =='<br><br>': # <- detecte la derniere ligne du message
.........rdc = rd[0:-9] # elimination du EOL
.........i=0 # traduit que le message a ete entierement lu
......papyr.write(rdc + '\n')
L'instruction rd=f.readline() effectue la declaration d'une variable rd en tant que variable locale circonscrite a la fonction transfMessage. Ce qui arrive a cette variable locale rd ne retentit pas sur la variable exterieure rd prealablement existante, je l'ai verifie.
Jusque la rien d'anormal. Cela respecte les notions de variables locales/variables globales.
Par contre, je suis intrigue par le fait que l'instruction papyr.write(rdc+'\n') realise bien l'envoi de la valeur de rdc vers le fichier papyr qui est un fichier exterieur a la fonction.
En effet, le fait que l'ecriture de la valeur de rdc est effectivement realisee dans le fichier exterieur papyr signifie pour moi que papyr n'est pas considere comme un truc local circonscrit a la fonction.
Or, il n'y a pas, dans la definition de la fonction, de ligne definissant papyr comme untruc global , grace a la declaration 'global'.
Donc....je suis perplexe. Les fichiers sont ils une exception ? Sont-ils des trucs consideres comme globaux partout dans un programme meme si on ne les declare pas explicitement comme tels ?
merci d'avance pour toute reponse
A voir également:
- Python: ouverture de fichier et fonction
- Citizen code python avis - Accueil - Outils
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- Exercice python - Forum Python
1 réponse
Salut,
Je viens de faire ce test:
Et ça m'affiche "1".
Il semblerait que lorsqu'une fonction tombre sur une nouvelle variable, elle va lachercher dans sa portée locale. Si elle n''y est pas, elle la cherchera dans la portée globale.
Par contre ceci ne fonctionnera pas:
Car, pour f2, a n'est plus dans une portée globale mais dans une portée locale en amont....
Je viens de faire ce test:
a=1 def test(): print a test()
Et ça m'affiche "1".
Il semblerait que lorsqu'une fonction tombre sur une nouvelle variable, elle va lachercher dans sa portée locale. Si elle n''y est pas, elle la cherchera dans la portée globale.
Par contre ceci ne fonctionnera pas:
def f1(): a=1 f2() def f2(): print a f1()
Car, pour f2, a n'est plus dans une portée globale mais dans une portée locale en amont....