f-strings for Python 3.6 学习笔记

简要说明

f-strings (f-literals) 能让格式化字符串的代码更简洁,也更具有可读性(Python 3.6 及以上)

举几个例子:

import datetime
name = 'Rohcna'
age = 22
anniversary = datetime.date(2020, 1, 1)

在 python 3.5 里如果想把下面几行规整到一行,可能会写:

print(
    'My name is {name}, my age is {age}, my anniversary is {anniversary:%A, %B %d, %Y}.'
        .format(name=name, age=age, anniversary=anniversary)
)
//My name is Rohcna, my age is 22, my anniversary is Wednesday, January 01, 2020.

但是使用 f-literals 可以这样写:

print(
    f'My name is {name}, my age NEXT year is {age+1}, my anniversary is {anniversary:%A, %B %d, %Y}.'
)
//My name is Rohcna, my age is 22, my anniversary is Wednesday, January 01, 2020.

更简单了有木有?

f-strings 的一些语法:

  1. 表达式有多行时:
age = 22
print(
    f'''{
      age + 1,
      age + 2,
      age + 3
    }'''
)
//(23, 24, 25)

注意语法!前后都是三个单引号,否则报错

SyntaxError: EOL while scanning string literal
  1. 表达式内可增添参数
a = 2/3
print('{a:.2}'.format(a=a))
//0.67
print(f'{a:.2}')
//0.67
print(f'Value:{a:.2}')
//Value:0.67
print(f'Value:{a:10.2}')
//Value:      0.67
precision = 4
print(f'Value:{a:10.{precision}}')
//Value:     0.6667
  1. 更复杂的写法
list = [1, 22, 3, 1]
big = lambda x:x.capitalize()
print(f'list[1] {list[1]} {big("rohcna")} {list.count(1)}')
//list[1] 22 Rohcna 2
print(
    f'list[1] '
    f'{list[1]} {big("rohcna")} '
    f'{list.count(1)}'
)
//list[1] 22 Rohcna 2

顺嘴一提:在缩进的时候,Pycharm 自动给表达式加上了 f’’

  1. RegExp 库或内置的 re 库中,联合使用 r 和 f
import re
header = 'Subject'
line = 'Subject: Hi'
print(
    re.match(fr'^{header}: (.*)', line)
        .group(0)
)
//Subject: Hi
print(
    re.match(fr'^{header}: (.*)', line)
        .group(1)
)
//Hi
print(
    re.match(fr'^{header}: (.*)', line)
        .group(2)
)
//IndexError: no such group
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值