從Python 3.6開始,f-string是格式化字符串的一種很好的新方法。與其他格式化方式相比,它們不僅更易讀,更簡潔,不易出錯,而且速度更快!
在Python 3.6之前,有兩種將Python表達式嵌入到字符串文本中進行格式化的主要方法:%-formatting
和str.format()
。
%-formatting
字符串對象具有使用%運算符的內置操作,您可以使用它來格式化字符串。
name = "tom" print("貓的名字叫%s"%name)
輸出:
cat name is tom
上面的示例代碼看起來足夠易讀,但是,一旦開始使用多個參數和更長的字符串,代碼就將變得不太容易閱讀。
name = "tom" age = 2 action = "迅速" disposition = "懶" print("貓的名字叫%s,今年%d歲了,抓老鼠非常%s,但是非常%s,白天總睡覺。"%(name, age, action, disposition))
輸出:
貓的名字叫tom,今天2歲了,抓老鼠非常迅速,但是非常懶,白天總睡覺。
str.format()
str.format()
是對%-formatting
的改進。它使用正常的函數調用語法,並且可以通過對要轉換為字符串的對象的__format __()
方法進行擴展。
使用str.format()
,替換字段用大括號標記:
name = "tom" print("貓的名字叫{}".format(name))
輸出:
貓的名字叫tom
也可以通過引用其索引,以任何順序引用變量:
name = "tom" age = 2 print("貓的名字叫{1},今年{0}歲了,今天星期{0}".format(age, name))
輸出:
貓的名字叫tom,今年2歲了,今天星期2
也可以使用 **
來用字典,巧妙的完成格式化:
cat = {"name": "tom", "age": 2} print("貓的名字叫{name},今年{age}歲了".format(**cat))
輸出:
貓的名字叫tom,今年2歲了
使用 str.format() 格式化
代碼比使用 %-formatting
更易讀,但當處理多個參數和更長的字符串時,str.format()看起來
仍然非常冗長。
f-Strings:一種改進Python格式字符串的新方法
f-Strings語法與str.format()
使用的語法類似,但較少細節啰嗦,只需要在格式化字符串前加f或F即可。看看這是多么容易可讀:
name = "tom" age = 2 print(f"貓的名字叫{name},今年{age}歲了")
輸出:
貓的名字叫tom,今年2歲了
格式化時可以使用函數:
name = "tom" age = 2 print(F"貓的名字叫{name.upper()},今年{age}歲了")
輸出:
貓的名字叫TOM,今年2歲了
格式化時可以使用字典:
cat = {"name": "tom", "age": 2} print(F"貓的名字叫{cat['name']},今年{cat['age']}歲了")
輸出:
貓的名字叫tom,今年2歲了
格式時可以對浮點數精度做限制:
name = "tom" age = 2.1274 print(F"貓的名字叫{name},今年{age: .2f}歲了")
輸出:
貓的名字叫tom,今年 2.13歲了
當使用格式化時需要輸出{}時,只需要使用{{}}即可輸出{}
var_value = 1 + 1 print(F"字典{{'var_name': 'var_value'}}的var_value應為{var_value}")
輸出
字典{'var_name': 'var_value'}的var_value應為2