मैं एक परियोजना है कि एक समारोह परिभाषा इस के समान बनाए रखने:क्या `locals() 'में पहुंच योग्य` .0` चर या स्मृति या प्रदर्शन को प्रभावित करता है?
def f(a, (b1, b2), c):
print locals()
कोड मुझे पता चला कि एक .1
कुंजी मान (b1, b2)
साथ locals()
में दिखाई दिया, डिबगिंग है। एक त्वरित जांच से पता चला कि निम्नलिखित की तरह एक समारोह परिभाषा:
def f((a1, a2)):
print locals()
मूल्य (a1, a2)
साथ locals()
में एक .0
कुंजी होगा। मैं इस व्यवहार से हैरान था, लेकिन पाइथन दस्तावेज में कोई जानकारी नहीं मिली।
मेरे प्रश्न हैं: क्या इन अन्यथा-पहुंच योग्य स्थितित्मक चर स्मृति या प्रदर्शन को प्रभावित करते हैं? क्या वे कहीं भी दस्तावेज हैं? उनसे कौन सा उद्देश्य पूरा होता है?
प्रश्न में परियोजना फीडपार्सर है, जो सैक्स आधारित है और संभावित रूप से दर्जन या सैकड़ों फ़ंक्शन कॉल हो सकती हैं जो इस व्यवहार से प्रभावित होंगी।
बहस में खोल स्वचालित टपल की यह शैली को पायथन 3 में स्पष्ट रूप से हटा दिया गया है, और यदि मुझे उस समय सही ढंग से याद किया गया था तो व्याकरण के दुर्घटना के रूप में वर्णित किया गया था। यह निश्चित रूप से एक शैली नहीं है जिसे मैं देखना चाहता हूं। –
यह जानना अच्छा है! आप सही हैं, '2to3' उपकरण स्वचालित रूप से' xxx_todo_changeme' के साथ '(b1, b2)' वाक्यविन्यास को प्रतिस्थापित करता है। फिर भी, क्या आपके पास ऐसा लिंक है जो इस व्यवहार को स्पष्ट करने में मदद कर सकता है, या स्पष्ट निष्कासन के संबंध में एक लिंक? –
@ कर्ट मैक्की [पीईपी 3113 - ट्यूपल पैरामीटर अनपॅकिंग को हटाने] [http://www.python.org/dev/peps/pep-3113/)। –