f-strings 是python3.6开始加入标准库的格式化输出新的写法,这个格式化输出比之前的%s 或者 format 效率高并且更加简化,非常的好用.
2.1 简单举例
他的结构就是F(f)+ str的形式,在字符串中想替换的位置用{}占位,与format类似,但是用在字符串后面写入替换的内容,而他可以直接识别。
name = '章超印'
age = 17
sex = '男'
msg = F'姓名:{name},性别:{age},年龄:{sex}' # 大写字母也可以
msg = f'姓名:{name},性别:{age},年龄:{sex}'
print(msg)
'''
输出结果:
姓名:章超印,性别:17,年龄:男
'''
2.2 任意表达式
他可以加任意的表达式,非常方便:
print(f'{25*4}') # 100
name = 'jacky'
print(f"全部大写:{name.upper()}") # 全部大写:JACKY
# 字典也可以
student = {'name': '章超印', 'age': 18}
msg = f"The student is {student['name']}, age {student['age']}"
print(msg) # The student is 章超印, age 18
# 列表也行
lst = ['章超印', 18]
msg = f'姓名:{lst[0]},年龄:{lst[1]}.'
print(msg) # 姓名:章超印,年龄:18.
#列表推导式也可以
s = f"{[i for i in range(9) if i > 3]}"
print(s)
2.3 可以插入函数
可以用函数完成相应的功能,然后将返回值返回到字符串相应的位置
def sum_a_b(a,b):
return a + b
a = 1
b = 2
print('求和的结果为' + f'{sum_a_b(a,b)}')
2.4 多行f
name = 'Jacky'
age = 18
character = 'excellent'
# speaker = f'''Hi {name}.
# You are {age} years old.
# You are a {character} guy!'''
speaker = f'Hi {name}.'\
f'You are {age} years old.'\
f'You are a {character} guy!'
print(speaker)
2.5 其他细节
print(f"{73}") # 73
print(f"{{73}}") # {73}
print(f"{{{73}}}") # {73}
print(f"{{{{73}}}}") # {{73}}
print(f"{{{{{73}}}}}") # {{73}}
print(f"{{{{{{73}}}}}}") # {{{73}}}
print(f"{{{{{{{73}}}}}}}") # {{{73}}}
print(f"{{{{{{{{73}}}}}}}}") # {{{{73}}}}
print(f"{{{{{{{{{73}}}}}}}}}") # {{{{73}}}}
# ! , : { } ;这些标点不能出现在{} 这里面。
# print(f'{;12}') # 报错
# 所以使用lambda 表达式会出现一些问题。
# 解决方式:可将lambda嵌套在圆括号里面解决此问题。
x = 5
print(f'{(lambda x: x ** 2) (x)}') # 25