चेतावनी 1: डॉक्स में कहा गया है, यह सभी पायथन कार्यान्वयन पर काम करने की गारंटी नहीं है:
CPython कार्यान्वयन विवरण: यह फ़ंक्शन दुभाषिया में पायथन स्टैक फ्रेम समर्थन पर निर्भर करता है, जो कि पायथन के सभी कार्यान्वयन में मौजूद होने की गारंटी नहीं है। यदि पायथन स्टैक फ्रेम के बिना कार्यान्वयन में चल रहा है, तो यह फ़ंक्शन कोई भी नहीं लौटाता है।
चेतावनी 2: यह फ़ंक्शन कोड को छोटा बनाता है, लेकिन संभवतः यह पायथन दर्शन को उतना स्पष्ट करता है जितना आप कर सकते हैं। इसके अलावा, यह टिप्पणियों में जॉन क्रिस्टोफर जोन्स द्वारा इंगित मुद्दों को संबोधित नहीं करता है, हालांकि आप एक समान फ़ंक्शन बना सकते हैं जो कुंजियों के बजाय विशेषताओं के साथ काम करता है। यह केवल एक प्रदर्शन है जिसे आप कर सकते हैं यदि आप वास्तव में चाहते हैं!
def destructure(dict_):
if not isinstance(dict_, dict):
raise TypeError(f"{dict_} is not a dict")
parent_frame = inspect.currentframe().f_back
(line,) = inspect.getframeinfo(parent_frame).code_context
lvalues, _equals, _rvalue = line.strip().partition("=")
keys = [s.strip() for s in lvalues.split(",") if s.strip()]
if missing := [key for key in keys if key not in dict_]:
raise KeyError(*missing)
for key in keys:
yield dict_[key]
In [5]: my_dict = {"hello": "world", "123": "456", "key": "value"}
In [6]: hello, key = destructure(my_dict)
In [7]: hello
Out[7]: 'world'
In [8]: key
Out[8]: 'value'
यह समाधान आपको जावास्क्रिप्ट में की तरह, सभी में से कुछ को चुनने की अनुमति देता है। यह उपयोगकर्ता द्वारा प्रदान किए गए शब्दकोशों के लिए भी सुरक्षित है