2011-08-23 35 views
5

क्या नीचे 2 आयात विवरणों में कुछ अंतर है? या बस वही बात?इन 2 आयातों के बीच कोई अंतर?

from package import * 

import package 
+0

वे बहुत अलग हैं, [आयात कर रहा है पायथन मॉड्यूल] को देखने के (http://effbot.org/zone/import-confusion.htm)। –

उत्तर

12

from package import * स्थानीय नेम स्पेस में पैकेज से सब कुछ का आयात करता है; यह अनुशंसित नहीं है क्योंकि यह अवांछित चीजें पेश कर सकता है (जैसे एक स्थानीय जो ओवरराइट करता है)। यह एक त्वरित और आसान आयात उपकरण है, लेकिन यदि चीजें गंभीर हो जाती हैं, तो आपको from package import X,Y,Z, या import package वाक्यविन्यास का उपयोग करना चाहिए।

import package पैकेज से स्थानीय package ऑब्जेक्ट में सबकुछ आयात करता है। तो यदि पैकेज something() फ़ंक्शन लागू करता है, तो आप इसे package.something() द्वारा उपयोग करेंगे।

इसके अलावा, एक और बात यह है कि इस बारे में बात की जानी चाहिए नेस्टेड नाम स्थान मामला है: मान लीजिए कि आप समारोह package.blabla.woohoo.func() है, तो आप import package.blabla.woohoo और उपयोग कर सकते हैं package.blabla.woohoo.func(), लेकिन यह भी जटिल है। इसके बजाए, इसे करने का आसान तरीका from package.blabla import woohoo है और फिर woohoo.func() या from package.blabla.woohoo import func का उपयोग करें, और उसके बाद func() का उपयोग करें। मुझे लगता है कि इसका मतलब बनता है। यदि ऐसा नहीं होता है, तो यहां वर्णन करने के लिए एक कोड टुकड़ा है:

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

from package.blabla import woohoo 
woohoo.func() 

from package.blabla.woohoo import func 
func() 

आशा इस मदद करता है :)

3

अंतर पैकेज के लिए एक नाम स्थान का उपयोग है।

from package import * 
class_in_package() 

बनाम

import package 
package.class_in_package() 
संबंधित मुद्दे