2010-11-08 15 views
5

मैं कुछ अजगर कोड है कि इस तरह दिखता है विरासत में मिला है:पायथन: कई संभावित मान समारोह तर्क के लिए

name = 'London' 
code = '0.1' 
notes = 'Capital of England' 
ev = model.City(key=key, code=code, name=name or code, notes=notes) 

सीखने की भावना में, मुझे पता है कि क्या name or code तर्क के साथ हो रहा है करना चाहते हैं। क्या यह कह रहा है 'name का उपयोग करें यदि यह शून्य नहीं है, अन्यथा code' का उपयोग करें?

और इस तरह के कई संभावित तर्कों की आपूर्ति के लिए तकनीकी शब्द क्या है, इसलिए मैं इसे पायथन डॉक्स में पढ़ सकता हूं?

धन्यवाद!

+0

मेरा बुरा - संपादित, क्षमा करें। छद्म कोड का उपयोग बंद करना होगा! – AP257

उत्तर

13

लगभग। यह कहता है कि उपयोग नाम अगर यह झूठी का मूल्यांकन नहीं करता है। Things that evaluate to false शामिल हैं, लेकिन तक सीमित नहीं हैं:

  • False
  • खाली दृश्यों ((), [], "")
  • खाली मैपिंग ({})
  • None

संपादित जोड़ा गया लिंक प्रदाता उत्तर पर टिप्पणी में SilentGhost द्वारा ed।

+2

यह है ... वास्तव में अच्छा है। मुझे लगता है कि मुझे पाइथन पसंद है। – AP257

+1

भी 'कोई नहीं' (4 और जाने के लिए) –

+1

[पूर्ण सूची दस्तावेज़ों में उपलब्ध है] (http://docs.python.org/library/stdtypes.html#truth-value-testing) – SilentGhost

7

पायथन में, or ऑपरेटर पहला ऑपरेंड लौटाता है, जब तक कि यह झूठी मूल्यांकन न करे, इस स्थिति में यह दूसरा ऑपरेंड लौटाता है। प्रभाव में यह name का उपयोग करेगा, code के डिफ़ॉल्ट फ़ॉलबैक के साथ name निर्दिष्ट नहीं है।

+3

स्पष्टीकरण जो 'या' अपने ऑपरेटरों के वास्तविक मूल्य देता है, न केवल ' सामान्य शिक्षा के लिए और मूल प्रश्न –

1

आग ऊपर एक अजगर कंसोल:

>>> name = None 
>>> code = 0.1 
>>> name or code 
0.10000000000000001 

मामले में नाम गलत अभिव्यक्ति कोड के लिए मूल्यांकन करेंगे करने के लिए मूल्यांकन करता है। अन्यथा नाम का उपयोग किया जाएगा।

+0

के उत्तर के रूप में सही 'या' गलत 'बहुत महत्वपूर्ण है, मैंने इसे सही कर दिया है। – kgiannakakis

0

आपने इसे लगभग सही किया है, लेकिन 'शून्य' ठीक से तय नहीं करता है। मूल रूप से कुछ भी जो झूठी (0, झूठी, खाली स्ट्रिंग '' का मूल्यांकन करेगा, दूसरी स्ट्रिंग को पहले की बजाय प्रदर्शित किया जाएगा।

अगर एक्स: एक्स
बाकी : y

कुछ सांत्वना खेलने:

एक्स = ''
'एक्स या वाई' इस अर्थ में के बराबर करने के लिए तरह है y = 'दहाड़'
एक्स या वाई
-'roar '
एक्स =' ARF '
एक्स या वाई
-'arf '
एक्स = झूठी
एक्स या वाई
-'roar'

0

सीखने की भावना में, मैं करना चाहते हैं पता है कि नाम या कोड तर्क के साथ क्या चल रहा है। क्या यह कह रहा है ' नाम का उपयोग करें यदि यह शून्य नहीं है, अन्यथा कोड' का उपयोग करें?

हाँ मूल रूप से लेकिन अशक्त अजगर एक से अधिक बात मतलब हो सकता है में (रिक्त स्ट्रिंग, कोई नहीं ..)

अपने मामले में की तरह:

>>> name = 'London' 
>>> code = 0.1 
>>> name or code 
'London' 
>>> name = '' 
>>> code = 0.1 
>>> name or code 
0.1000.... 

लेकिन यह अजीब thew कि एक समारोह पैरामीटर कभी-कभी पूर्णांक और एक स्ट्रिंग अन्य बार हो सकता है।

आशा इस मदद कर सकते हैं: =)

+1

भ्रम से बचने के लिए, मैं कहूंगा कि यह डिफ़ॉल्ट पैरामीटर मानों का उदाहरण नहीं है, यह सिर्फ बूलियन अभिव्यक्तियों का मूल्यांकन है। डिफ़ॉल्ट पैरामीटर मान तब होते हैं जब आप विधि * परिभाषा * में डिफ़ॉल्ट मान प्रदान करते हैं। 'def कुछ_method (param1, some_flag = गलत): # some_flag कॉल समय पर छोड़े जाने पर गलत पर डिफ़ॉल्ट है। साथ ही, जैसा कि अन्य ने कहा है, यह शून्य की बजाय झूठी बात है कि खाली स्ट्रिंग, खाली सूची इत्यादि का मूल्यांकन किया जाता है। – mikej

+0

@ माइकज: मैं अपने प्रश्न से समझता हूं __ कई संभावित तर्क जैसे कि (यह) __ कि वह __default तर्क मानों के बारे में बात कर रहा है। शायद मैं इसे गलत समझा सकता हूं :) क्योंकि यह समारोह के लिए या __this__ पर निर्भर करता है या ??? – mouad

+0

मुझे लगता है कि @ एपी 257 (ओपी) सोच रहा है कि 'नाम या कोड' किसी प्रकार का विशेष पैरामीटर सिंटैक्स गुज़र रहा है जब वास्तव में यह अभिव्यक्ति का मूल्यांकन होता है और कहीं भी इसका उपयोग किया जा सकता है। – mikej

1

सही है, कि मुहावरा पहले मूल्य है कि यह सच है (आम तौर पर कोई भी नहीं) का मूल्यांकन करते हैं। देखभाल के साथ प्रयोग करें क्योंकि मान्य मान (जैसे शून्य) अनजाने में त्याग दिया जा सकता है। का अधिक सुरक्षित दृष्टिकोण की तरह कुछ है:

if name is not None: 
    # use name 

या

name if name is not None else code 
संबंधित मुद्दे