मैं बस कुछ भ्रम को संबोधित करना चाहता हूं। __file__
वाइल्डकार्ड नहीं है यह एक विशेषता है। डबल अंडरस्कोर गुण और विधियों को सम्मेलन द्वारा "विशेष" माना जाता है और एक विशेष उद्देश्य प्रदान करता है।
http://docs.python.org/reference/datamodel.html उनमें से सभी विशेष तरीकों और विशेषताओं को दिखाता है, यदि उनमें से सभी नहीं।
इस मामले में __file__
एक मॉड्यूल (एक मॉड्यूल ऑब्जेक्ट) की विशेषता है। पायथन में .py
फ़ाइल एक मॉड्यूल है। तो import amodule
में __file__
की विशेषता होगी जिसका अर्थ अंतर परिस्थितियों में विभिन्न चीजें हैं।
डॉक्स से लिया:
__file__
फ़ाइल जहाँ से मॉड्यूल लोड किया गया था, अगर यह एक फ़ाइल से लोड किया गया था के पथ नाम है। __file__
विशेषता सी मॉड्यूल के लिए मौजूद नहीं है जो सांख्यिकीय रूप से दुभाषिया में जुड़े हुए हैं; साझा मॉड्यूल को साझा लाइब्रेरी से गतिशील रूप से लोड किया गया है, यह साझा लाइब्रेरी फ़ाइल का पथनाम है।
आपके मामले में मॉड्यूल वैश्विक नामस्थान में __file__
विशेषता का उपयोग कर रहा है।
कार्रवाई कोशिश में यह देखने के लिए:
# file: test.py
print globals()
print __file__
और चलाएँ:
python test.py
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__file__':
'test_print__file__.py', '__doc__': None, '__package__': None}
test_print__file__.py
स्रोत
2012-02-14 04:16:32
जाहिर है, यह एक वाइल्डकार्ड नहीं है। – tripleee
इसका एक "जादू" चर; वाइल्डकार्ड का मतलब कुछ अलग है। –