2016-02-05 4 views
9

मैंने गलती से लिखा वाक्य रचना सही है। तो क्या हुआ, पाइथन क्यों सोचता है कि मेरा मतलब है कि मैं क्या टाइप कर रहा हूं?= + अजगर ऑपरेटर

कंप्यूटर हमें बहुत अधिक भरोसा करते हैं। :)

+2

'total_acc = + सटीकता'' total_acc = + सटीकता' है – Clodion

+0

ओह तो जब आप नकारात्मक मान चाहते हैं, तो आप * (- 1) नहीं करते, धन्यवाद @Clodion! उसे नहीं पता था। – gsamaras

+3

संभावित डुप्लिकेट [Python3 में यूनरी ऑपरेटरों के साथ रिक्त स्थान के उपयोग के संबंध में तर्क] (http://stackoverflow.com/questions/35208351/logic-regarding-the-use-of-spaces-with-unary-operators-in- python3) – zondo

उत्तर

5

यह वही है जैसे आप total_acc = -accuracy की तरह नकारात्मक थे, नकारात्मक के बजाय सकारात्मक को छोड़कर। यह मूल रूप से total_acc = accuracy जैसा ही है, हालांकि एक मूल्य जोड़ने से पहले + इसे जोड़ना नहीं है। के बजाय दो (पूर्व: a+b):

इस के रूप में सिर्फ एक ही तर्क (+a पूर्व) एक एकल ऑपरेटर कहा जाता है।

This link इसे थोड़ा और बताता है।

2

ऐसा लगता है कि आप total_acc = +accuracy कर रहे हैं, जो total_accaccuracy के बराबर सेट करता है। + किसी अन्य मान के बिना एक चर के पहले वैरिएबल की __pos__ विधि कहने का कारण बनता है। अधिकांश प्रकार के लिए, यह nop है, लेकिन कुछ प्रकार हैं, उदा। Decimal जो __pos__ लागू करते हैं।

+0

हां यह सही है, लेकिन '+' ऑपरेटर के साथ क्या होता है? किसी मान से पहले – gsamaras

+3

'+' ऑब्जेक्ट की '__pos __()' विधि को आमंत्रित करता है यदि उसके पास है। अधिकांश प्रकारों में ऐसी कोई विधि नहीं होती है, इसलिए यह नो-ऑप है। 'दशमलव 'एक प्रकार है जो इसका उपयोग करता है; https://stackoverflow.com/questions/16819023/whats-the-purpose-of-the-pos-unary-operator-in-python – kindall

+0

@kindall हू, मुझे यह नहीं पता था। जानना अच्छा है, धन्यवाद! मैं इसे अपने उत्तर में जोड़ दूंगा। –

7

यदि आप इस प्रकार की त्रुटियों को जल्दी से पकड़ने में रुचि रखते हैं, तो आप स्थिर कोड विश्लेषण के साथ ऐसा कर सकते हैं। उदाहरण के लिए, flake8 के लिए:

$ cat test.py 
total_acc = 0 
accuracy = 10 

total_acc =+ accuracy 
$ flake8 test.py 
test.py:4:12: E225 missing whitespace around operator 

इस मामले में, यह + के बाद अतिरिक्त जगह के बारे में शिकायत कर रहा है, यह सोच कर कि आप वास्तव में total_acc = +accuracy मतलब है। इससे पहले आपको समस्या की खोज करने में मदद मिलेगी।

एफवाईआई, pylint उसे भी पकड़ लेगा।

+2

आपका उत्तर * वास्तव में * कुछ विशेष जोड़ता है, आप एक अपवित्र वर्ग के लायक हैं! – gsamaras

संबंधित मुद्दे