黑马程序员技术交流社区
标题:
字符串格式化方法:f-strings
[打印本页]
作者:
afjah
时间:
2019-5-31 22:50
标题:
字符串格式化方法:f-strings
%格式化并不是很好,因为它很冗长并且容易导致错误,比如没有正确显示元组或字典,
str.format() 是对 %格式化 的改进,它使用普通函数调用语法,并且可以通过 __format__() 方法为对象进行扩展,str.format() 比 %格式化高级了一些,但是它在处理多个参数和更长的字符串时仍然可能非常麻烦,
而 f-Strings,它可以使得字符串格式化更加容易,f-strings 是指以 f 或 F 开头的字符串,其中以 {} 包含的表达式会进行值替换
f-Strings 使用方法:
>>> name = 'hoxis'
>>> age = 18
>>> f"hi, {name}, are you {age}"
'hi, hoxis, are you 18'
>>> F"hi, {name}, are you {age}"
'hi, hoxis, are you 18'
因为 f-strings 是在运行时计算的,那么这就意味着你可以在其中放置任意合法的 Python 表达式,比如:
1.运算表达式
>>> f"{ 2 * 3 + 1}"
'7'
2.调用函数
>>> def test(input):
... return input.lower()
...
>>> name = "Hoxis"
>>> f"{test(name)} is handsome."
'hoxis is handsome.'
也可以直接调用内置函数
>>> f"{name.lower()} is handsome."
'hoxis is handsome.'
3.在类中使用
>>> class Person:
... def __init__(self,name,age):
... self.name = name
... self.age = age
... def __str__(self):
... return f"{self.name} is {self.age}"
... def __repr__(self):
... return f"{self.name} is {self.age}. HAHA!"
...
>>> hoxis = Person("hoxis",18)
>>> f"{hoxis}"
'hoxis is 18'
>>> f"{hoxis!r}"
'hoxis is 18. HAHA!'
>>> print(hoxis)
hoxis is 18
>>> hoxis
hoxis is 18. HAHA!
4.多行 f-string
>>> name = 'hoxis'
>>> age = 18
>>> status = 'Python'
>>> message = {
... f'hi {name}.'
... f'you are {age}.'
... f'you are learning {status}.'
... }
>>>
>>> message
{'hi hoxis.you are 18.you are learning Python.'}
每行都要加上 f 前缀,否则格式化会不起作用
>>> message = {
... f'hi {name}.'
... 'you are learning {status}.'
... }
>>> message
{'hi hoxis.you are learning {status}.'}
可以在字符串中使用各种引号,只要保证和外部的引号不重复即可
>>> f"{'hoxis'}"
'hoxis'
>>> f'{"hoxis"}'
'hoxis'
>>> f"""hoxis"""
'hoxis'
>>> f'''hoxis'''
'hoxis'
那如果字符串内部的引号和外部的引号相同时呢?那就需要 \ 进行转义
>>> f"You are very \"handsome\""
'You are very "handsome"'
若字符串中包含括号 {},那么你就需要用双括号包裹它(三个括号包裹效果一样)
>>> f"{{74}}"
'{74}'
>>> f"{{{74}}}"
'{74}'
用反斜杠进行转义字符,但是不能在 f-string 表达式中使用,可以先在变量里处理好待转义的字符,然后在表达式中引用变量
>>> name = '"handsome"'
>>> f'{name}'
'"handsome"
不能在表达式中出现 #,否则会报出异常
所以f-string 比 %格式化方法和 str.format() 都要快,并且f-string 非常简洁实用、可读性高,而且不易出错
作者:
卡哇伊伊
时间:
2019-7-26 14:15
预测未来最好的方法就是去创造未来。
作者:
夜听雨
时间:
2019-8-13 14:18
不要等待机会,而是要创造机会。现在我来了,希望我们都可以坚持,早日用知识达到暴富
作者:
柠檬leung不酸
时间:
2019-9-12 09:23
预测未来最好的方法就是去创造未来。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2