10 studenoga, 2011

import * from python as trlababalan

Slušah Radio Free Python intervju s Alexom Martinellijem. Jedno od pitanja je bilo koju stvar on najmanje voli (ili najviše mrzi) u Pythonu. Njegov odgovor je bio lambda funkcije. Provjerio sam svoj kod i u zadnje dvije godine nisam ni jednom koristio lambde. Mene, više nego što ih ne volim, ostavljaju potpuno ravnodušnim.

No, ima jedna stvar koju stvarno mrzim u pythonu: Importiranje modula. I ne mislim samo na circular dependency, nego na sintaksu. Importirati se može:
import abc.cde
from abs import cde
import abc as qwe
from abc import cde as qwe
Što je mnogima zbunjujuće.

Ja osobno ne volim nikad koristiti
from abs import cde
...zato što, kad jednog dana idem refaktorirati kod i funkciju cde prebacim u neki drugi modul, onda volim imati jednostavan način kako naći sva mjesta gdje se modul koristi. S...
from abc import cde 
...moram uvijek cde pozivati s abc.cde(). I onda mi je jednostavno u nekom python modulu vidjeti gdje se sve modul koristi. Samo napravim pretraživanje po "abc.".

No.

Mnogi moduli imaju imena koja jednostavno pozivaju da ih se koristi kao imena za varijable.
import time 
I onda u kodu pišem npr. time.sleep(). I to je OK, međutim, ako negdje u kodu moram koristiti varijablu "time", onda sam pregazio "time" kojeg sam importirao (jer, importirani time je isto najobičniji objekt koji ima funkcije kao metode, isl...).

Tako da sam ja na kraju počeo apsolutno svugdje importirati na jedan i samo jedan način:
import logging as mod_logging
import math as mod_math
import datetime as mod_datetime

import utils as mod_utils
import copy as mod_copy
import geo as mod_geo
Dakle, uvijek samo jedan način importiranja i uvijek modul importiram s aliasem koji ima prefix "mod_". Dakle, išlo bi "import time as mod_time", i onda svugdje u kodu jednostavno vidim kad se neki modul koristi. Module koji imaju jednostavna imena neću nikad pomiješati s istoimenim varijablama, isl.

Ima li neki pythonist koji ovo čita sa stavom/idejama/(protu)argumentima ovakvom pristupu?

Nema komentara:

Objavi komentar