Komande from i import - ★★ Fog Developer ★★

Novo

6/recent/ticker-posts

Komande from i import

10.2 Komande from i import 

Komanda import ti je već poznata, ali što bi smo mi morali da konstantno kucamo nešto tipa, ime_modula.ime_funkcije ? Zar ne bi bilo lakše pozvati samo funkciju po imenu? Tako, na primer možda bi mi želeli da direktno importujemo promenljivu argv u naš program iz prethodnog primera (i da „poštedimo“ naše jadne prste tako što bi izbegli kucanje sys. svaki put)? Odgovor je da možemo i tako: potrebno je da koristimo naredbu:
>>> from sys import argv 
>>> argv 
[''] 
>>> 
(u ovom primeru sam bio u interaktivnom promptu, pa je samim tim argv promenljiva samo prazan string).
Ili:
>>> from os import getcwd 
>>> getcwd() 
'/home/lelemud' 
>>> 
Vidimo da komanda ima sledeću sintaksu: prvo ide reč from, a zatim navodimo ime modula iz kog želimo da „uvezemo“ neki objekat, zatim ide već poznata komanda import, koju prati ime objekta koji importujemo.
Iako ovakav pristup, na prvi pogled, deluje moćniji i bolji, to zapravo, i nije tako! U principu, trebao bi da izbegavaš import objekata na ovaj način, i koristiš samo import komandu, jer će, u suprotnom, postojati velika verovatnoća da tvoj program napravi tzv sukobe imena (možda u njemu budeš koristio još neku promenljivu sa istim imenom kao i upravo uvezena, a to vrlo lako može da se desi ukoliko importuješ mnogo modula, pa se u dva pojavi promenljiva sa istim imenom). Takođe, ukoliko izbegavaš from... import... program će ti biti čitljiviji, jer ćeš u svakom trenutku znati iz kog modula si „uvezao“ funkciju ili promenljivu.
Primer u kom se desi „neželjena“ pojava:
>>> from sys import path 
>>> path 
['', '/usr/lib/python3.2', '/usr/lib/python3.2/plat-linux2', '/usr/lib/python3.2/lib-dynload', '/usr/local/lib/python3.2/dist-packages', '/usr/lib/python3/dist-packages'] 
>>> path = getcwd() 
>>> path 
'/home/lelemud' 
>>> 
Možda nam je negde u programu bilo potrebno da podesimo path promenljivu, koja nam je pre toga bila uvežena iz sys modula. Kada smo je promenili, više u našem programu ne možemo pristupiti promenljivoj path iz sys modula, već dobijamo vrednost koju smo naknadno dodelili.
Naravno da postoje i izuzetci od ove prakse, tipičan primer je Tkinter modul (koji služi za kreiranje i pravljenje GUI-ja) koji je baš i kreiran tako da se uvozi sa from naredbom:
>>> from tkinter import * 
>>> 
U ovom slučaju, zvezdica znači sve, tj. komanda prevedena na „ljudski“ jezik znači – nađi modul sa imenom tkinter i iz njega uvezi sve u naš program.
I za kraj, da ti pokažem jedan trik:
>>> from math import sqrt as koren 
>>> koren(4) 
2.0 
>>> koren(100) 
10.0 
>>> koren 
<built-in function sqrt> 
>>> 
U modul math, koji je deo Pythonovih standardnih biblioteka, nalaze se funkcije i konstante koje se najčešće koriste u matematici. Funkcija sqrt() služi za „vađenje“ kvadratnog korena iz broja. Vidimo da smo ovu funkciju uvezli iz modula na standardni način, ali, možda se plašimo da ne dođe do nekih neželjenih sukoba imena? Zato smo dodali u komandu reč as, pa ime koje želimo da koristimo, i za koje smo sigurni da je jedinstveno, kako ne bi bilo slučajno overread-ovano. Dalje u programu koristimo to novo ime koje smo dodelili našoj funkciji, gde god nam je potrebno. Da napomenem samo na kraju da se naredba as (bukvalan prevod: kao) može koristiti da se dodeli novo ime bilo kom objektu koji se importuje.

10.1 Kompajlirani
pyc fajlovi
Indeks 10.3 Ime modula

Постави коментар

0 Коментари