2012-07-13 7 views
9

मुझे उत्सुकता है कि कौन सा रूप अधिक कुशल है, सही शैली है, आदि। मुझे लगता है कि "0 "दृष्टिकोण बहुत तेज़ है; मुझे यकीन नहीं है कि क्यों "फ्लोट" दृष्टिकोण की सराहना की जाती है (यदि यह है)।क्या यह पाइथन में 7.0 या फ्लोट (7) का उपयोग करने के लिए कम कम्प्यूटेशनल रूप से गहन है?

+2

यदि आप इसे उपयोगी मानते हैं तो नीचे दिए गए उत्तर को स्वीकार करें। –

उत्तर

9

float(7) का उपयोग करते हुए कहते हैं कुछ अनावश्यक भूमि के ऊपर — अजगर globals() में float समारोह खोजने के लिए और इसे कहते हैं है। 7.0 का उपयोग रन-टाइम की बजाय संकलन-समय पर सभी आवश्यक रूपांतरण करता है। आप इसे Python bytecode disassembler का उपयोग करके देख सकते हैं।

>>> import dis 
>>> def f(): return 7.0 
... 
>>> def g(): return float(7) 
... 
>>> dis.dis(f) 
    1   0 LOAD_CONST    1 (7.0) 
       3 RETURN_VALUE   
>>> dis.dis(g) 
    1   0 LOAD_GLOBAL    0 (float) 
       3 LOAD_CONST    1 (7) 
       6 CALL_FUNCTION   1 
       9 RETURN_VALUE   
0

7.0 "बेहतर" है, फसल को फ्लोट करने की कोई ज़रूरत नहीं है, यह स्वचालित रूप से ऐसा करेगा।

फ्लोट() एक फ्लोट पर एक गैर-फ्लोट कास्टिंग के लिए सबसे अच्छा बचाया जाता है।

1

फ़्लोट अक्षर 7.0 के रूप में लिखा जा सकता है, यह ठीक है क्योंकि वे स्वचालित रूप से float टाइप कर रहे हैं।

यदि आप फ्लोर करने के लिए एक पूर्णांक या स्ट्रिंग को परिवर्तित करना चाहते हैं तो float() फ़ंक्शन उचित है लेकिन उस फ़ंक्शन को एक फ्लोट शाब्दिक लिखने के लिए बुलाया जाने की आवश्यकता नहीं है।

9

7.0 दृष्टिकोण का उपयोग, float(7) दृष्टिकोण तो यह एक अलग फायदा नहीं है तैरता को पूर्णांक या स्ट्रिंग प्रकार बदलने के लिए, उदाहरण के लिए प्रयोग किया जाता है:

a = 7 
b = "7" 
print float(a) 
7.0 
print float(b) 
7.0 
+0

आह मैं अब इसका उपयोग देखता हूं। धन्यवाद! – piperchester

+1

कोई समस्या नहीं है, और SO में आपका स्वागत है :) – Hassek

+1

'float() 'कुछ ओवरहेड भी लगाता है। –

0

float(0) का उपयोग करते हुए और अधिक स्पष्ट है जब अपने कोड को फिर से पढ़ने बाद की तारीख में, यदि आप गलती से ".0" छोड़ देते हैं तो बाद में कम भ्रम पैदा करते हैं।

+0

एक गलती से इसे कैसे छोड़ देता है? –

+0

@ माइकल हॉफमैन कहें कि आपके पास 'this_should_be_a_float = 7.0/denominator' है, जहां denominator एक int है। मेरी सोच यह थी कि भविष्य में रखरखाव के लिए यह इंगित करना बहुत अच्छा तरीका हो सकता है कि '7.0' को एक फ्लोट होने की आवश्यकता है ताकि किसी ने बाद में 7.0 को दूसरे स्थिर में बदल दिया हो, 6 के रूप में, और ".0" जोड़ने के लिए भूल गए। – CraigTeegarden

+0

यदि आप पहले से नहीं हैं तो आपको '__future__ आयात प्रभाग से' का उपयोग करना चाहिए। तो यह एक समस्या नहीं होगी। –

6

निम्नलिखित पायथन में सभी बराबर हैं:

>>> 7. == 7.0 == float(7) == float("7") 
True 

मैं float(7) या float("7") उपयोग करने से बचें होता है जब आप हार्ड-कोड मान रहे हैं, के रूप में अजगर दुभाषिया पहले एक पूर्णांक के लिए मूल्य कास्ट करना होगा या एक स्ट्रिंग, और फिर इसे फ़्लोटिंग-पॉइंट में परिवर्तित करें।

उस ओवरहेड से बचने के लिए, पाइथन को एक फ्लोट शाब्दिक देने के लिए 7. या 7.0 का उपयोग करें।

बेशक, float() का उपयोग अभी भी अन्य डेटा प्रकारों को एक फ्लोट में बदलने के लिए किया जाना चाहिए।

0

7.0 तेज होना चाहिए। float(7) एक पूर्णांक बनाता है, फिर float() फ़ंक्शन को पूर्णांक को एक फ्लोट में परिवर्तित करने के लिए कॉल करें, इसलिए float(7) कॉलिंग फ़ंक्शन कॉल ओवरहेड को इंगित करता है साथ ही float() फ़ंक्शन की जांच करने में कोई भी त्रुटि हो सकती है।

सबसे व्यावहारिक उद्देश्यों के लिए, निश्चित रूप से, गति में अंतर बहुत अधिक मायने रखता है (जब तक कि आप एक गहरे पाश में नहीं हैं जहां आपका कोड लाखों बार सैकड़ों कहलाता है), लेकिन कुछ आह्वान करने के बारे में कुछ सुरुचिपूर्ण है रूपांतरण फ़ंक्शन जब दुभाषिया को फ़्लोट बनाने के लिए वाक्यविन्यास में बनाया गया है।

float() का उपयोग करें जब आपके पास ऐसा कुछ है जो फ्लोट नहीं है (जैसे स्ट्रिंग या एक पूर्णांक) जिसे आप कनवर्ट करना चाहते हैं।

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

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