Python 3.6 f字符串的使用

这是我参与更文挑战的第18天,活动详情查看: 更文挑战

介绍

相信很多兄弟们在使用Python的过程中, 都遇到过格式化输出字符串的需求

以往我们会使用这种方式:

text = 'Hello'
time = 1
print('%s World %d' % (text, time))
# Hello World 1
复制代码

在Python 3.6中, 新加入f字符串, 我们可以把刚才的代码修改为:

text = 'Hello'
time = 1
print(f'{text} World {time}')
复制代码

是不是有点类似于js的模板字符串?

常用示例

f字符支持Python中各种变量类型, 还支持表达式/函数/对象, 下面简单列举下使用代码

数组

test = ['one', 'two']
print(f'first is {test[0]}')
# first is one
复制代码

字典

test = {'id': 1, 'name': 'Houtaroy'}
print(f"name is {test['name']}")
# name is Houtaroy
复制代码

对象

目标对象需实现__repr__方法:

@dataclass
class User:

    name: str

    def __repr__(self):
        return self.name
        
user = User(name='test')
print(f'用户: {user}')
# 用户: test
复制代码

表达式

x = 2
y = 3
print(f'{x * y}')
# 6
复制代码

函数

def sum(a, b):
    return a + b
    
x = 2
y = 3
print(f'{sum(x, y)}')
# 5
复制代码

格式化

f字符串同样支持对内容进行格式化

转义

对于{}, 需要用如下方式转义: print(f'{{}}')

对于其它常见符号, 和字符串的转义并无差别: print(f'\'\'')

多行字符串

f字符串同样可应用于多行符号""":

name = 'test'
gender = 'unknown'
print(f"""
name is {name}
gender is {gender}
""")
# name is test
# gender is unknown
复制代码

时间格式化

和平常的日期格式化一模一样

print(f'{datetime.now():%Y-%m-%d %H:%M:%S}')
# 2021-01-01 00:00:00
复制代码

浮点数格式化

和正常的浮点数格式化一模一样

test = 1.2
print(f'{test:.3f}')
# 1.200
复制代码

宽度与对齐

直接使用数字指定打印字符的宽度, 如果不够, 可以使用0进行填充, 例如:

for x in range(5, 16):
    print(f'{x:03}')
# 005
# 006
# ...
# 015
复制代码

可以使用>进行右对齐, <进行左对齐, 例如:

for x in range(5, 16):
    print(f'{x:>2}')
#  5
#  6
# ...
# 15
for x in range(5, 16):
    print(f'{x:<2}')
# 5
# 6
# ...
# 15
复制代码

总结

f字符串可以理解为在字符串中运行Python代码, 其大部分使用方法都和正常使用Python的语法相同

格式化的部分需要注意哦

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享