def key(): print 'key'
def val(): print 'val'
{key() : val()}
प्रिंट val, key
, यानी मान का मूल्यांकन पहले किया जाता है। क्या यह व्यवहारशब्दकोश शब्दकोष का मूल्यांकन क्रम
- पाइथन संस्करणों और कार्यान्वयन में लगातार है?
- कहीं भी दस्तावेज?
def key(): print 'key'
def val(): print 'val'
{key() : val()}
प्रिंट val, key
, यानी मान का मूल्यांकन पहले किया जाता है। क्या यह व्यवहारशब्दकोश शब्दकोष का मूल्यांकन क्रम
संदर्भ मैनुअल के इस खंड के क्रम दस्तावेजों (http://docs.python.org/2/reference/expressions.html#dictionary-displays कुछ नहीं कहता है), लेकिन यह है कि तुम क्या देख रहे हैं की तुलना में अलग है दावा: http://docs.python.org/2/reference/expressions.html#evaluation-order
निम्नलिखित लाइनों में, भाव में मूल्यांकन किया जाएगा उनके प्रत्यय अंकगणित आदेश:
expr1, expr2, expr3, expr4
(expr1, expr2, expr3, expr4)
{expr1: expr2, expr3: expr4}
expr1 + expr2 * (expr3 - expr4)
expr1(expr2, expr3, *expr4, **expr5)
expr3, expr4 = expr1, expr2
और वहाँ इसके बारे में कार्यान्वयन के खिलाफ एक खुले बग है: Evaluation order of dictionary display is different from reference manual।
बहुत बहुत धन्यवाद! मजेदार कैसे आरएच कहता है कि किसी ने भी आठ साल तक देखभाल नहीं की है ... और 100,000 अंक के लिए बधाई! – georg
यह पता चला है कि यह कार्यान्वयन में निरंतर है।
def p(x):
print(x)
return x
{p('k1'): p('v1'), p('k2'): p('v2'), p('k3'): p('v3')}
देता है:
Python 2.7.3 (default, Aug 1 2012, 05:16:07)
IronPython 2.7.3 (2.7.0.40) on Mono 4.0.30319.1 (32-bit)
[PyPy 2.0.0-beta1 with GCC 4.4.3] on linux2
v1
k1
v2
k2
v3
k3
लेकिन
Jython 2.5.1+ (Release_2_5_1, Oct 31 2011, 11:44:27)
[OpenJDK Server VM (Sun Microsystems Inc.)] on java1.6.0_27
Jython 2.7b1 (default:ac42d59644e9, Feb 9 2013, 15:24:52)
[OpenJDK Server VM (Sun Microsystems Inc.)] on java1.6.0_27
k1
v1
k2
v2
k3
v3
धन्यवाद, आशा है कि वे जल्द ही तय हो जाएंगे। – georg
हो सकता है इस कारण से है: अपने कोड 'को डीआईसी बराबर है [कुंजी()] = वैल()'। और असाइनमेंट ऑपरेटर में आरएचएस का हमेशा मूल्यांकन किया जाता है, इसलिए '' वाल 'पहले मुद्रित हो जाता है और फिर एलएचएस निष्पादित किया जाता है। –