2016-12-26 29 views
13

f-string, Python 3.6'daki yeni özelliklerden biridir.Python 3.6'da f " {10}" değerlendirildiğinde "{'simgesi niçin duruyor?

Ama bu çalıştığınızda: sol kaşlı ayraç '{' sonucu kalır neden

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

ben çözemiyorum. açıkça bu cevap vermez

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

PEP-0498 yılında: Ben sonuç str.format ile aynı olması gerektiğini gerekiyordu. Sonuçta, sol kaşlı ayraç '{''un sonuçta kalmasına neden olur ve bu fark f-string ve str.format() arasındaki fark nedir?

cevap

13

Bu bir hatadır.

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

ya da benzer bir etkiye sahip, ham f -STRING kullanarak:

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

görülüyor ki '\' kullanarak şu anda çalışan bir yaklaşım yerine \ için \u005c değişmez Unicode kullanmaktır İki garip şey aynı zamanda meydana gelir:

  • Bir sonraki karakter ('{' burada) kaçtı. ortaya çıkan dize. (

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

    iki şekilde de, yakında bir hata raporu doldurarak olacak:

  • biçimlendirilmiş dize garip ve noktasında

Vaka beklenen değil, değerlendirdi da Ben zaten görmediğimden beri) ve cevap aldığımda güncellenir.

Güncelleme: Orada konuşma bakmak ilgileniyorsanız, Issue 29104 -- Left bracket remains in format string result when '\' preceeds it düzenlendi. Güncelleştirme 2: Sorun, PR 490 ile çözümlendi.