Czy poniższe 2 instrukcje importu mają jakąś różnicę? Czy po prostu to samo?Jakakolwiek różnica między tymi 2 importami?
from package import *
import package
Czy poniższe 2 instrukcje importu mają jakąś różnicę? Czy po prostu to samo?Jakakolwiek różnica między tymi 2 importami?
from package import *
import package
from package import *
importuje wszystko z pakietu do lokalnej przestrzeni nazw; nie jest to zalecane, ponieważ może wprowadzić niepożądane rzeczy (takie jak funkcja, która nadpisuje lokalną). Jest to szybkie i poręczne narzędzie do importowania, ale w przypadku poważnych problemów należy użyć składni from package import X,Y,Z
lub import package
.
import package
importuje wszystko z pakietu do lokalnego obiektu package
. Jeśli więc pakiet implementuje funkcję something()
, użyjesz go przez package.something()
.
Ponadto, inna sprawa, że powinny być rozmawialiśmy o jest zagnieżdżony przypadek nazw: załóżmy, że masz funkcję package.blabla.woohoo.func()
można import package.blabla.woohoo
i używać package.blabla.woohoo.func()
, ale to jest zbyt skomplikowane. Zamiast tego w łatwy sposób można to zrobić pod numerem from package.blabla import woohoo
, a następnie użyć woohoo.func()
lub from package.blabla.woohoo import func
, a następnie użyć func()
. Mam nadzieję, że to ma sens. Jeśli nie, oto kawałek kodu do zilustrowania:
import package.blabla.woohoo
package.blabla.woohoo.func()
from package.blabla import woohoo
woohoo.func()
from package.blabla.woohoo import func
func()
Nadzieja to pomaga :)
Różnica jest stosowanie nazw dla pakietu.
from package import *
class_in_package()
vs
import package
package.class_in_package()
są bardzo różne, patrz [importowanie Pythona modułów] (http://effbot.org/zone/import-confusion.htm). –