2016-12-26 15 views
13

f-string पायथन 3.6 में नई सुविधाओं में से एक है।पायथन 3.6 में प्रतीक '{' तब रहता है जब f " {10}" का मूल्यांकन किया जाता है?

लेकिन जब मैं कोशिश यह:

>>> f"\{10}" 
'\\{10' 

मैं समझ नहीं क्यों छोड़ दिया घुंघराले ब्रेस '{' परिणाम में रहता है। मैं माना जाता है कि परिणाम str.format के साथ एक ही होना चाहिए:

>>> "\{}".format(10) 
'\\10' 

PEP-0498 में यह इस स्पष्ट उत्तर नहीं देता। तो परिणामस्वरूप रहने के लिए बाएं घुंघराले '{' का कारण बनता है और f-string और str.format() के बीच इस अंतर का क्या कारण बनता है?

उत्तर

13

यह एक बग है। , एक समान प्रभाव के साथ

>>> f'\u005c{10}' 
'\\10' 

या, एक कच्चे f -string का उपयोग कर:

>>> rf'\{10}' 
'\\10' 

'\' का उपयोग कर ऐसा लगता है कि इनके द्वारा एक दृष्टिकोण है कि वर्तमान में काम करता है यूनिकोड शाब्दिक \u005c बजाय \ के लिए उपयोग करने के लिए है दो अजीब चीजें एक ही समय में होती हैं:

  • अगला चरित्र ('{' यहां) बच गया था, इसे छोड़कर परिणामस्वरूप स्ट्रिंग।
  • स्वरूपित स्ट्रिंग भी है का मूल्यांकन है, जो अजीब और उम्मीद नहीं

बिंदु में प्रकरण है:

>>> f'\{2+3}' 
'\\{5' 
>>> a = 20 
>>> f'\{a+30}' 
'\\{50' 

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

अद्यतन: Issue 29104 -- Left bracket remains in format string result when '\' preceeds it बनाया गया, अगर तुम वहाँ बातचीत पर एक नज़र डालें रुचि रखते हैं।

अद्यतन 2: समस्या PR 490 के साथ हल हो गई।

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