2012-07-19 49 views
84

अजगर में कहते हैं कि तुमअजगर में स्ट्रिंग और पूर्णांक श्रृंखलाबद्ध

s = "string" 
i = 0 
print s+i 

आप त्रुटि दे देंगे ताकि आप लिखना

print s+str(i) 

त्रुटि नहीं मिलता है।

मुझे लगता है कि इस पूर्णांक और स्ट्रिंग संयोजन को संभालने के लिए काफी अनाड़ी तरीका है। भी जावा इस तरह संयोजन के करने के लिए स्ट्रिंग को स्पष्ट कास्टिंग जरूरत नहीं है। क्या पाइथन में स्पष्ट कास्टिंग किए बिना इस तरह के संयोग को करने का कोई बेहतर तरीका है?

+7

यह है। – mouad

+3

यह अस्पष्टता का कारण बन जाएगा। '1" + 1', '2' या' 11 "' और क्यों नतीजा होगा? – Buddy

+1

बडी मुझे यकीन नहीं है कि आप क्या सोच रहे हैं लेकिन कृपया न मानें। मेरी समस्या 2 अलग-अलग ऑब्जेक्ट प्रकारों को जोड़ना था और मुझे समाधान मिला। मैं नहीं जानता कि आपने पाइथन में कितना प्रोग्राम किया है, लेकिन क्या आपने कभी दो स्ट्रिंग्स को केवल त्रुटि प्राप्त करने का प्रयास किया है जब उनमें से कोई एक प्रकार का नहीं है? आप स्पष्ट जांच कर सकते हैं लेकिन यह कोड का थोड़ा सा हिस्सा है। जब आपको त्रुटियों को लॉग करने की आवश्यकता होती है तो इस तरह की चीज की आवश्यकता होती है। – specialscope

उत्तर

104

आधुनिक स्ट्रिंग स्वरूपण:

"{} and {}".format("string", 1) 
+2

धन्यवाद यह करने के लिए यह अच्छा तरीका है। – specialscope

+0

सिर्फ वंशावली के लिए, क्योंकि अतीत में चीजें बदल गई हैं और भविष्य में बदलने की संभावना है: यह "आधुनिक" किस संस्करण के रूप में है? – jvriesem

23

स्ट्रिंग स्वरूपण, नई शैली .format() पद्धति का उपयोग करके (चूक .format() साथ प्रदान करता है):

'{}{}'.format(s, i) 

या उससे अधिक है, लेकिन "अभी भी चारों ओर चिपके हुए", % -formatting:

'%s%d' %(s, i) 

दोनों उदाहरणों में ऊपर वहाँ है concatenated दो आइटम के बीच कोई अंतरिक्ष। यदि अंतरिक्ष की आवश्यकता है, तो इसे केवल प्रारूप तारों में जोड़ा जा सकता है।

ये लॉट नियंत्रण और वस्तुओं को संयोजित करने के तरीके के बारे में लचीलापन, उनके बीच की जगह आदि प्रदान करते हैं। format specifications see this के बारे में विवरण के लिए।

69

कोई स्ट्रिंग स्वरूपण:

>> print 'Foo',0 
Foo 0 
+2

यह प्रिंट के साथ अच्छी तरह से काम करेगा लेकिन एक चर के रूप में एक चर के लिए असाइन नहीं किया जा सकता है। यह सेट ऑब्जेक्ट देता है। – specialscope

+1

यह दो आइटमों के बीच एक अतिरिक्त रिक्त स्थान पर चिपक जाता है, जब तक कि आप v3 'print()' * फ़ंक्शन * का उपयोग न करें और इसके कुछ पैरामीटर सेट करें। – Levon

10

अजगर कि में एक दिलचस्प भाषा है, जबकि वहां आम तौर पर एक (या दो) "स्पष्ट" पूरा करने के लिए किसी भी तरीके है कार्य, लचीलापन अभी भी मौजूद है।

s = "string" 
i = 0 

print (s + repr(i)) 

ऊपर कोड स्निपेट python3 वाक्य रचना में लिखा है लेकिन प्रिंट के बाद कोष्ठकों हमेशा की अनुमति दी गई (वैकल्पिक) जब तक संस्करण 3 उन्हें अनिवार्य बना दिया।

उम्मीद है कि इससे मदद मिलती है। क्योंकि अजगर मजबूत टाइप (https://en.wikipedia.org/wiki/Strong_typing) भाषा (कुछ अधिक समझने के लिए :) पर गूगल के लिए) है

केटलीन