fonction illisible dans un fichier annexe

fonction illisible dans un fichier annexe - Python - Programmation

Marsh Posté le 17-02-2023 à 14:24:10    

Bon, je débute en Python mais 40 ans de Pascal objet devrait m'aider à me dépatouiller.
 
Sauf que je constate un truc bizarre.
 
Si je propose le code suivant tout va bien:
 
import io
import os
 
 
def filesize(ichemin, inomfichier):
    temp = os.path.getsize(ichemin+inomfichier)
    return temp
 
print("Taille: ", filesize('', "test.txt" ))

 
 
Mais si je transfère  la fonction "filesize" en copier/coller dans un fichier MyDef.py annexe, et que j'importe, cela ne marche plus:
 
import io
import os
import MyDef
 
 
print("Taille: ", filesize('', "test.txt" ))  

Où donc ai-je commis une erreur??  :heink:

Reply

Marsh Posté le 17-02-2023 à 14:24:10   

Reply

Marsh Posté le 17-02-2023 à 15:10:18    

Faut pas lui dire explicitement d'importer la fonction, genre from MyDef import filesize ? :??:

Reply

Marsh Posté le 21-02-2023 à 22:38:12    

Oui ou alors appeler explicitement MyDef.filesize(...)

Reply

Marsh Posté le 28-02-2023 à 18:34:04    

Je confirme les affirmations des deux intervenants précédents: en Python l'import d'un module importe le module même, en tant qu'objet, ça ne fout pas implicitement le contenu du module dans le namespace courant comme dans d'autres langages.

 

D'ailleurs il est bien visible que os est importé, puis os est accédé, pas le contenu de os (même si pour faire bien il faudrait importer os.path: ici il s'avère que `os` importe `path`, mais ce n'est pas nécessairement le cas).

 

Accessoirement,

  • le préfixe "i" sur les variables n'a aucun sens et n'est pas idiomatique (éviter le français aussi, ça rend le code difficile à lire, sauf si c'est nécessaire pour le domaine)
  • les noms de modules, comme de variables, ou de fonctions, sont censés être en casse_serpent, la CassePascal est réservée aux noms de classes
  • les chemins sont joints avec os.path.join pour s'assurer que le séparateur est correcte indépendamment de la plateforme, ou bien pour du code plus moderne pathlib peut être utilisé


Message édité par masklinn le 28-02-2023 à 18:40:23

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed