क्यों f-Strings के साथ f '{{{74}}} समान f' {{74}} 'है?


109

एफ-स्ट्रिंग्स पायथन 3.6 से उपलब्ध हैं और स्ट्रिंग्स को प्रारूपित करने के लिए बहुत उपयोगी हैं:

>>> n='you'
>>> f'hello {n}, how are you?'
'hello you, how are you?'

पायथन 3 के एफ-स्ट्रिंग्स में उनके बारे में अधिक पढ़ना : एक बेहतर स्ट्रिंग स्वरूपण सिंटैक्स (गाइड) । मुझे एक दिलचस्प पैटर्न मिला:

ध्यान दें कि ट्रिपल ब्रेसिज़ का उपयोग करने के परिणामस्वरूप आपकी स्ट्रिंग में केवल एकल ब्रेसिज़ होंगे:

>>> f"{{{74}}}"
'{74}'

हालाँकि, यदि आप ट्रिपल ब्रेसेस से अधिक का उपयोग करते हैं, तो आप अधिक ब्रेसिज़ प्राप्त कर सकते हैं:

>>> f"{{{{74}}}}"
'{{74}}'

और यह वास्तव में मामला है:

>>> f'{74}'
'74'

>>> f'{{74}}'
'{74}'

अब अगर हम दो {से तीन से गुजरते हैं , तो परिणाम समान होता है:

>>> f'{{{74}}}'
'{74}'           # same as f'{{74}}' !

तो हमें 4 तक की आवश्यकता है! ( {{{{) आउटपुट के रूप में दो ब्रेसिज़ प्राप्त करने के लिए:

>>> f'{{{{74}}}}'
'{{74}}'

ऐसा क्यों है? दो ब्रेसिज़ के साथ क्या होता है पायथन को उस क्षण से एक अतिरिक्त की आवश्यकता होती है?


70
यह के आउटपुट की तुलना करने के रोशन किया जा सकता है f"{{2+2}}"और f"{{{2+2}}}", जो कर रहे हैं '{2+2}'और '{4}'क्रमश:
केविन

3
@ केविन महान। यह मजेदार है कि f'{2+2}'4 कैसे लौटता है, f'{{2+2}}'2 + 2, f'{{{2+2}}}'} {4}, f'{{{{2+2}}}}'2 {{2 + 2}} और इतने पर रिटर्न देता है । यह समझ में आता है, लेकिन पहली नजर में पहेली थोड़ा सा।
फेडोरक्वी 'एसओ

2
सीधे शब्दों में कहें, क्योंकि f'{74}'यह उसी के समान है f'74'
काया ३

1
यह एफ-स्ट्रिंग्स के साथ कुछ भी नया नहीं है, अच्छा पुराना str.formatयह भी करता है।
Peilonrayz

@Peilonrayz कैसे? "{74}".format(...)कम से कम 74 तत्वों के साथ एक अनुक्रम की आवश्यकता होगी।
जेरिट

जवाबों:


118

डबल ब्रेसेस ब्रेसिज़ से बचते हैं, ताकि कोई प्रक्षेप न हो: {{bra {, और }}bra }। और 74एक अपरिवर्तित स्ट्रिंग रहता है '74'

ट्रिपल ब्रेसिज़ के साथ, बाहरी डबल ब्रेसिज़ बच गए हैं, ऊपर के समान। दूसरी ओर आंतरिक ब्रेसिज़, मूल्य के नियमित स्ट्रिंग प्रक्षेप के लिए नेतृत्व करते हैं 74

यही है, स्ट्रिंग f'{{{74}}}'के बराबर है f'{{ {74} }}', लेकिन रिक्त स्थान के बिना (या, समकक्ष, से '{' + f'{74}' + '}')।

किसी वैरिएबल द्वारा संख्यात्मक स्थिरांक को बदलते समय आप अंतर देख सकते हैं:

In [1]: x = 74

In [2]: f'{{x}}'
Out[2]: '{x}'

In [3]: f'{{{x}}}'
Out[3]: '{74}'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.