Zanurkuj w Pythonie/Dwa sposoby importowania modułów: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Piotr (dyskusja | edycje)
mNie podano opisu zmian
Robwolfe (dyskusja | edycje)
Nie podano opisu zmian
Linia 2:
== Importowanie modułów za pomocą <tt>from module import</tt> ==
 
W Pythonie mamy dwa sposoby importowania modułów. Obydwa są przydatne, dlatego też powinniśmy umieć je wykorzystaćwykorzystywać. Jednym ze sposobów jest użycie polecenia <tt>import nazwa_modulu</tt>, który mogliśmy zobaczyć w rozdziale [[Python/Twój pierwszy program#Wszystko jest obiektem|Twój pierwszy program - „Wszystko jest obiektem”]]. Inny sposób realizuje tę samą czynność, ale posiada pewne różnice. Niżej jest prosty przykład wykorzystujący instrukcję <tt>from module import</tt>:
 
from UserDict import UserDict
Linia 24:
<type 'function'>
 
# Moduł <tt>types</tt> nie posiada żadnych metod; onposiada właśnie posiadajedynie atrybuty dla każdego typu obiektu w Pythonie. Zauważmy, że atrybut (w tym przypadku FunctionType) musi być poprzedzony nazwą modułu - <tt>types</tt>.
# FunctionType nie został sam w sobie określony w przestrzeni nazw; istnieje on tylko w kontekścikontekście modułu <tt>types</tt>.
# Używając tej składni atrybut FunctionType z modułu <tt>types</tt> został zaimportowany bezpośrednio do lokalnej przestrzeni nazw.
# Teraz możemy odwoływać się bezpośrednio do FunctionType, bez odwoływania się do <tt>types</tt>.
Linia 31:
Kiedy powinniśmy używać <tt>from module import</tt>?
 
* Kiedy często odwołujemy się do atrybutów i metod, a takżei nie potrzebujemychcemy wielokrotnie wpisywać wiele razy nazwy modułu. Wtedy najlepiej wykorzystać <tt>from module import</tt>.
* Jeśli potrzebujemy selektywnie zaimportować tylko kilka atrybutów, metod, powinniśmy wykorzystać <tt>from module import</tt>.
* Jeśli moduł zawiera atrybuty lub metody, które posiadają taką samą nazwę jaka jest w naszym module, powinniśmy wykorzystać <tt>import nazwa_modulu</tt> aby uniknąć konfliktu nazw.
W innych przypadkach jest to kwestia stylu, możemymożna spojrzećspotkać nakod kody napisanenapisany obydwoma sposobami.
 
{{Infobox|Należy używać <tt>from module import *</tt> oszczędnie, ponieważ utrudnia on określenie, skąd pochodzi dana funkcja lub atrybut, dlatego też utrudnia debugowanie (wyszukiwanie błędów w programie).}}