मैं समझ नहीं पा रहा हूं कि पायथन में कोई signफंक्शन क्यों नहीं है । इसमें एक absबिलिन है (जिसे मैं signबहन मानता हूं ), लेकिन नहीं sign।
अजगर 2.6 में एक copysignफ़ंक्शन ( गणित में ) भी है, लेकिन कोई संकेत नहीं है। क्यों एक लिखने के लिए परेशान copysign(x,y)जब तुम सिर्फ एक लिख सकता है signऔर उसके बाद प्राप्त copysignसीधे से abs(x) * sign(y)? उत्तरार्द्ध बहुत अधिक स्पष्ट होगा: x, y के चिन्ह के साथ, जबकि नकल के साथ आपको याद रखना होगा कि क्या यह x के चिन्ह के साथ y या y के चिन्ह के साथ x है!
स्पष्ट रूप से sign(x)इससे अधिक कुछ भी प्रदान नहीं करता है cmp(x,0), लेकिन यह बहुत अधिक पठनीय होगा कि यह भी (और अजगर के लिए बहुत पठनीय भाषा के लिए, यह एक बड़ा प्लस होगा)।
अगर मैं एक अजगर डिजाइनर था, तो मैं दूसरा तरीका हो सकता है: कोई cmpबिल्डिन नहीं , बल्कि एक sign। जब आपको आवश्यकता होती है cmp(x,y), तो आप बस एक sign(x-y)(या, गैर-संख्यात्मक सामान के लिए भी बेहतर कर सकते हैं , बस एक x> y - बेशक यह sortedएक पूर्णांक तुलनित्र के बजाय एक बूलियन को स्वीकार करने की आवश्यकता होनी चाहिए )। यह भी अधिक स्पष्ट होगा: सकारात्मक जब x>y(जबकि साथ cmpआप सम्मेलन सकारात्मक ध्यान रखना महत्वपूर्ण है है पहला है बड़ा है, लेकिन यह दूसरी तरह के आसपास हो सकता है)। बेशक cmpअन्य कारणों से अपने आप में समझ में आता है (जैसे कि गैर-संख्यात्मक चीजों को सॉर्ट करते समय, या यदि आप चाहते हैं कि सॉर्ट स्थिर हो, जो केवल बूलियन के साथ उपयोग करना संभव नहीं है)
तो, सवाल यह है कि पायथन डिजाइनर (नों) signने भाषा से समारोह को छोड़ने का फैसला क्यों किया ? बिल्ली copysignअपने माता-पिता के साथ क्यों परेशान होती है sign?
क्या मैं कुछ भूल रहा हूँ?
EDIT - पीटर हैनसन की टिप्पणी के बाद। उचित है कि आपने इसका उपयोग नहीं किया, लेकिन आपने यह नहीं कहा कि आप अजगर के लिए क्या उपयोग करते हैं। 7 वर्षों में जो मैं अजगर का उपयोग करता हूं, मुझे इसकी अनगिनत बार आवश्यकता थी, और आखिरी वह तिनका है जिसने ऊंट की पीठ को तोड़ा है!
हां, आप cmp को पास कर सकते हैं, लेकिन 90% बार जब मुझे इसे पास करने की जरूरत थी, तो यह एक मुहावरे में था जैसे
lambda x,y: cmp(score(x),score(y))कि साइन के साथ काम करना ठीक होगा।
अंत में, मुझे आशा है कि आप सहमत हैं कि signइससे अधिक उपयोगी होगा copysign, इसलिए भले ही मैंने आपका विचार खरीदा हो, साइन के बजाय गणित में इसे परिभाषित करने के बारे में क्यों परेशान हो? साइन की तुलना में नकल कितना उपयोगी हो सकता है?