python中的fstring的 !r,!a,!s


首先是fstring的結構

f ' <text> { <expression> <optional !s, !r, or !a> <optional : format specifier> } <text> ... '

'!s'在表達式上調用str(),'!r'調用表達式上的repr(),'!a'調用表達式上的ascii()
1.默認情況下,f-string將使用str(),但如果包含轉換標志,則可以確保它們使用repr () !

class Comedian:
    def __init__(self, first_name, last_name, age):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age

    def __str__(self):
        return f"{self.first_name} {self.last_name} is {self.age}."

    def __repr__(self):
        return f"{self.first_name} {self.last_name} is {self.age}. Surprise!"

調用

>>> new_comedian = Comedian("Eric", "Idle", "74")
>>> f"{new_comedian}"
'Eric Idle is 74.'

>>> f"{new_comedian}"
'Eric Idle is 74.'
>>> f"{new_comedian!r}"
'Eric Idle is 74. Surprise!'

2.!a的例子

>>> a = 'some string'
>>> f'{a!r}'
"'some string'"

等價於

>>> f'{repr(a)}'
"'some string'"

3.!d的例子

類似2

pycon2019有人提出的一個展望!d的功能實現:

在python3.8中以及實現上述功能,不過不再使用!d了改為了f"{a=}"的形式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM