zoukankan      html  css  js  c++  java
  • 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=}"的形式

  • 相关阅读:
    第7章例7-12
    第7章例7-11
    第7章例7-9
    第7章例7-8
    第7章例7-7
    第7章例7-6
    第7章例7-5
    第7章例7-4
    第7章例7-3
    第7章例7-2
  • 原文地址:https://www.cnblogs.com/c-x-a/p/10841930.html
Copyright © 2011-2022 走看看