Python Language
__Name__ विशेष चर
खोज…
परिचय
__name__
विशेष चर का उपयोग यह जांचने के लिए किया जाता है कि फ़ाइल को मॉड्यूल के रूप में आयात किया गया है या नहीं, और उनके __name__
विशेषता द्वारा फ़ंक्शन, वर्ग, मॉड्यूल ऑब्जेक्ट की पहचान करने के लिए।
टिप्पणियों
पायथन विशेष चर __name__
युक्त मॉड्यूल के नाम पर सेट किया गया है। शीर्ष स्तर पर (जैसे कि इंटरएक्टिव इंटरप्रेटर, या मुख्य फ़ाइल में) यह '__main__'
सेट है। यदि किसी मॉड्यूल को आयात किए जाने के बजाय सीधे चलाया जा रहा है तो स्टेटमेंट को ब्लॉक करने के लिए इसका उपयोग किया जा सकता है।
संबंधित विशेष विशेषता obj.__name__
वर्गों, आयातित मॉड्यूल और फ़ंक्शंस (विधियों सहित) पर पाई obj.__name__
है, और परिभाषित ऑब्जेक्ट का नाम देती है।
__name__ == '__main__'
विशेष चर __name__
उपयोगकर्ता द्वारा निर्धारित नहीं है। इसका उपयोग ज्यादातर यह जांचने के लिए किया जाता है कि मॉड्यूल स्वयं द्वारा चलाया जा रहा है या नहीं, क्योंकि import
किया गया था। आयात होने पर अपने मॉड्यूल के कुछ हिस्सों को चलाने के लिए, if __name__ == '__main__'
जाँच करें।
बता दें कि mod_1.py सिर्फ एक लाइन लंबी होगी:
import module2.py
और देखते हैं कि क्या होता है, जो मॉड्यूल 2 थ्रेड पर निर्भर करता है
स्थिति 1
module2.py
print('hello')
चल रहे मॉड्यूल 1 थिंकपैड hello
को प्रिंट करेगा
चल रहे मॉड्यूल 2 थिंकपैड hello
को प्रिंट करेगा
स्थिति 2
module2.py
if __name__ == '__main__':
print('hello')
चल रहे मॉड्यूल 1 डीएमआर कुछ भी नहीं छापेंगे
चल रहे मॉड्यूल 2 थिंकपैड hello
को प्रिंट करेगा
function_class_or_module .__ name__
किसी फ़ंक्शन, वर्ग या मॉड्यूल का विशेष गुण __name__
एक स्ट्रिंग है जिसमें उसका नाम होता है।
import os
class C:
pass
def f(x):
x += 2
return x
print(f)
# <function f at 0x029976B0>
print(f.__name__)
# f
print(C)
# <class '__main__.C'>
print(C.__name__)
# C
print(os)
# <module 'os' from '/spam/eggs/'>
print(os.__name__)
# os
__name__
विशेषता नहीं है, हालांकि, चर का नाम जो वर्ग, विधि या फ़ंक्शन का संदर्भ देता है, बल्कि यह परिभाषित किए जाने पर इसे दिया गया नाम है।
def f():
pass
print(f.__name__)
# f - as expected
g = f
print(g.__name__)
# f - even though the variable is named g, the function is still named f
डिबगिंग के लिए, इसका उपयोग दूसरों के बीच किया जा सकता है:
def enter_exit_info(func):
def wrapper(*arg, **kw):
print '-- entering', func.__name__
res = func(*arg, **kw)
print '-- exiting', func.__name__
return res
return wrapper
@enter_exit_info
def f(x):
print 'In:', x
res = x + 2
print 'Out:', res
return res
a = f(2)
# Outputs:
# -- entering f
# In: 2
# Out: 4
# -- exiting f
लॉगिंग में उपयोग करें
अंतर्निहित logging
कार्यक्षमता को कॉन्फ़िगर करते समय, एक सामान्य पैटर्न वर्तमान मॉड्यूल के __name__
के साथ एक लकड़हारा बनाना है:
logger = logging.getLogger(__name__)
इसका मतलब है कि मॉड्यूल का पूरी तरह से योग्य नाम लॉग में दिखाई देगा, जिससे यह देखना आसान हो जाएगा कि संदेश कहां से आए हैं।