2013-04-12 12 views
6

मुझे पता है कि यह एक बेवकूफ सवाल है, लेकिन मैं सिर्फ अजगर सीखना शुरू कर रहा हूं और मुझे अजगर का अच्छा ज्ञान नहीं है। मेरा प्रश्नआयात tkinter के बीच टीके और tkinter आयात से

from Tkinter import * 

और

import Tkinter as tk 

क्या अंतर है? क्यों मैं सिर्फ नहीं लिख सकते हैं क्या है

import Tkinter 

किसी को भी कुछ मिनट छोड़ कर सके मुझे प्रबुद्ध के लिए?

उत्तर

11

from Tkinter import * टिनटर में आपके वर्तमान नामस्थान में प्रत्येक खुला वस्तु आयात करता है। import Tkinter अपने नाम स्थान में "नाम स्थान" Tkinter आयात करता है और import Tkinter as tk ही करता है, लेकिन 'टी' के लिए स्थानीय स्तर पर "का नाम बदलता है" यह आप

, बी टाइप मान लीजिए कि हम एक मॉड्यूल foo डालते हैं कक्षाएं एक से युक्त, को बचाने के लिए , और सी

फिर import foo आपको foo.A, foo.B, और foo.C तक पहुंच प्रदान करता है।

जब आप import foo as x करते हैं तो आपके पास भी उन तक पहुंच है, लेकिन नाम x.A, x.B, और x.C. from foo import * अपने वर्तमान नाम स्थान में सीधे एक आयात करेगा, बी, और सी, ताकि आप उन्हें ए, बी के साथ उपयोग कर सकते हैं, और सी

वहाँ भी है from foo import A, C जो ए और सी आयात करेगा, लेकिन अपने वर्तमान में बी नहीं नाम स्थान।

आप from foo import B as Bar भी कर सकते हैं, जो बी को बार (आपके वर्तमान नामस्थान में) नाम के तहत उपलब्ध कराएगा।

तो आम तौर पर: जब आप मॉड्यूल का केवल एक ऑब्जेक्ट चाहते हैं, तो आप from module import object या from module import object as whatiwantittocall करते हैं।

जब आप कुछ मॉड्यूल कार्यक्षमता चाहते हैं, तो आप टाइपिंग को बचाने के लिए import module, या import module as shortname करते हैं।

from module import * निराश हो गया है, क्योंकि आप गलती से छाया ("ओवरराइड") नाम डाल सकते हैं, और ट्रैक खो सकते हैं कि कौन सी वस्तुएं मॉड्यूल के हैं।

+0

तो में चर्चा कारणों के लिए, यह अधिक प्रसंस्करण शक्ति ले करता है "आयात foo" का उपयोग करने के अगर मैं केवल वाला एक का उपयोग कर रहा हूँ कक्षा (उदाहरण के लिए कक्षा ए)। क्या मुझे इसके बजाय "foo आयात ए" से उपयोग करना चाहिए? या अंतर नगण्य है? बीटीडब्ल्यू, मेरे जैसे शुरुआती के लिए महान स्पष्टीकरण। धन्यवाद! –

+0

आयात के बारे में प्रदर्शन चिंताओं ए) नगण्य और बी) अप्रासंगिक है। जो पाइथन कार्यान्वयन नहीं है, वह आपको सबसे अच्छा लगा। 'foo आयात ए' से बाद में लुकअप में तेज़ होता है जब आप ए का उपयोग करते हैं, लेकिन पाइथनिस्ट आमतौर पर ऐसी चीजों की परवाह नहीं करते हैं। – ch3ka

3

आप निश्चित रूप से

import Tkinter 

उपयोग कर सकते हैं हालांकि, अगर आप ऐसा करेंगे, आप हर एक टी वर्ग के नाम आप Tkinter. के साथ उपयोग उपसर्ग होगा।

यह बल्कि असुविधाजनक है।

दूसरी ओर, निम्नलिखित:

import Tkinter as tk 

केवल टाइप करने के लिए tk. बजाय Tkinter. आवश्यक बनाकर समस्या नजरअंदाज कर देता है।

के रूप में करने के लिए:

from Tkinter import * 

यह आम तौर पर एक बुरा विचार है, Should wildcard import be avoided?

संबंधित मुद्दे