2011-08-23 17 views
5

Aşağıdaki 2 ithalat ifadesinin bir farkı var mı? Ya da sadece aynı şey?Bu 2 ithalat arasındaki fark nedir?

from package import * 

import package 
+0

vs

from package import * class_in_package() 

, [piton Modülleri içe] (bkz http://effbot.org/zone/import-confusion.htm). –

cevap

12

from package import * Yerel isim haline paketten her şeyi ithal ediyor; Bu, istenmeyen şeyleri (yerel olanın üzerine yazabilen bir işlev gibi) tanıtabileceği için önerilmez. Bu hızlı ve kullanışlı ithal araç, ama ciddi bir şeyler almak, sen from package import X,Y,Z veya import package sözdizimi kullanmalısınız.

import package yerel package nesnesine paketten her şeyi ithal ediyor. Paket something() işlevini uygularsa, package.something() tarafından kullanırsınız. Eğer import package.blabla.woohoo ve package.blabla.woohoo.func() kullanabilirsiniz işlevi package.blabla.woohoo.func() olduğunu varsayalım, ama bu çok karmaşık:

Ayrıca söz edilmelidir başka bir şey iç içe ad durumdur. Bunun yerine, bunu yapmak için kolay bir yoldur from package.blabla import woohoo ve sonra func() kullanmak sonra woohoo.func() veya from package.blabla.woohoo import func kullanın ve olduğunu. Umarım bu mantıklı gelir. Öyle değilse, burada bir kod parçası göstermek için verilmiştir:

import package.blabla.woohoo 
package.blabla.woohoo.func() 

from package.blabla import woohoo 
woohoo.func() 

from package.blabla.woohoo import func 
func() 

Umut bu yardımcı olur :)

3

fark paketi için ad kullanılmasıdır. Çok farklı

import package 
package.class_in_package() 
İlgili konular