लंबी कहानी कम, वहाँ कोई विशेष सिंटेक्स optionals को संभालने के लिए है (के बाद से वहाँ कोई optionals कर रहे हैं), हालांकि आप सशर्त असाइनमेंट (त्रिगुट ऑपरेटर) का उपयोग कर सकते कार्यक्षमता नकल करने के लिए:
unpacked_var = var.prop if var is not None else None
अजगर मैं में हालांकि यह जांच लेंगे कि var
में वह विशेषता है जिसे आप एक्सेस करना चाहते हैं।
unpacked_var = var.prop if hasattr(var, "prop") else None
आप बनाने के लिए एक समारोह में लिख सकते हैं इसे कम
def optional(var, attr):
return getattr(var, attr) if hasattr(var, attr) else None
unpacked_var = optional(var, "prop")
इस (और कम स्पष्ट है, IMHO) करने के लिए एक कम सार्वभौमिक तरीका नहीं है:
unpacked_var = hasattr(var, "prop") and var.prop or None
समस्या यहाँ यह है कि आपको None
मिलेगा यदि bool(var.prop) == False
, तो आप बेहतर ऊपर टर्नरी ऑपरेटर से चिपके रहेंगे।
स्रोत
2015-12-31 00:07:01
भ्रमित शीर्षक और टैग। – Snusmumrikken
आप एक सशर्त अभिव्यक्ति का उपयोग कर सकते हैं: 'var.prop अगर var else var' लेकिन सामान्य रूप से अजगर में आपको यह जानने की उम्मीद है कि कुछ कब नहीं है और जब यह नहीं है और पूछता नहीं है। –
@Snusmumrikken वास्तव में नहीं, यह वास्तव में स्पष्ट है, आपको इसे समझने में सक्षम होने के लिए स्विफ्ट या हास्केल की अवधारणाओं को समझने की आवश्यकता है – Zizouz212