python f-string 格式化字符串探究

引入:Old-school 的格式化方式

让我们以格式化输出以下结果为例

总共有3个苹果

百分号%方式

兼容性最好的方式,但可读性最差

item_count = 3
item_name= '苹果'

print('总共有%s个%s' % (item_count, item_name))

.format() 方法

python 2.7后才有的方式,速度慢,可读性有了提高

item_count = 3
item_name= '苹果'

print('总共有{}个{}'.format(item_count, item_name))

基本用法

字符串前加f或者F,大括号{}里面加入表达式,用法类似.format()方法,但可读性大大增强,速度也是三种方法中最快的

item_count = 3
item_name = '苹果'

print(f'总共有{item_count}个{item_name}')

多行f-string

name = 'Tom'
age = 18
occupation = 'student'

msg = (
    f'名字: {name}\n'
    f'年龄: {age}\n'
    f'职业: {occupation}'
)

print(msg)

运行结果:

名字: Tom
年龄: 18
职业: student

f-string 中使用函数

def larger(x, y):

    return x if x > y else y

a = 3
b = 4

print(f' {a} 和 {b} 中较大的值是 {larger(a, b)}')

注:要在字符串使用{}需要叠加来转义

print(f'Python f-string里加两层来使用 {{}} ')
print(f'照样使用\'转义符\'')

运行结果:

Python f-string里加两层来使用 {} 
照样使用'转义符

f-string 进一步用法(可以参考.format())

浮点数精度设定

在表达式后加入:.xf,x代表要保留的小数位数

from math import pi

print(f'{pi:.2f}')
print(f'{pi:.10f}')

运行结果:

3.14
3.1415926536

对齐方式与留空

s = 'abcdef'

print(f'{s:<10}')  # 左对齐
print(f'{s:^10}')  # 居中
print(f'{s:>10}')  # 右对齐

运行结果

abcdef    
  abcdef  
    abcdef

综合应用例子:进度条模拟

import time


def progress(percent, width=50):
    if percent > 100:
        percent = 100  # 避免百分比溢出100
    res = int(width * percent / 100) * '#'
    print(f'\r[{res:<{width}}] {percent:>6.2f}%', end='')
    """
    这里利用\r及end = ''实现动态覆盖效果
    通过嵌套大括号实现把width参数传入到进度条格式需要的宽度中

    """


recv_size = 0  # 收到文件的大小   
total_size = 102500  # 文件总大小

while recv_size < total_size:
    time.sleep(0.05)  # 模拟网速

    recv_size += 1024  # 模拟下载1024字节
    progress(recv_size / total_size * 100, 70)

运行结果:

[######################################################################] 100.00%
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值