欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3中的f-Strings增強版字符串格式化方法

 更新時間:2020年03月04日 08:18:33   作者:neweastsun  
這篇文章主要介紹了Python3中的f-Strings增強版字符串格式化方法,看完本文你將學(xué)習(xí)到如何以及為什么使用f-strings。對大家的工作或?qū)W習(xí)具有一定的參考借鑒價值,需要的朋友可以參考下

在Python3.6提供f-Strings新的字符串格式化語法。不僅更加可讀、簡潔,相比其他方式也不易造成錯誤,而且還更快。
看完本文你將學(xué)習(xí)到如何以及為什么使用f-strings。正式開始之前,我們先看看之前格式化字符串語法。

1. 舊式字符串格式化

在Python3.6之前,主要有兩種方式格式化字符串:%-格式化 和 str.format()。下面我們先了解它們的用法以及局限性。

1.1 %-格式化

這時Python的官方字符串格式化方法,從語言開始時就存在。官方文檔明確提出不建議使用,并其他使用其他方式代替避免不必要的錯誤。

String對象內(nèi)置了%操作,用于格式化字符串,請看示例:

>>> name = "Eric"
>>> "Hello, %s." % name
'Hello, Eric.'

如果需要插入多個變量,則需要使用元祖:

>>> name = "Eric"
>>> age = 74
>>> "Hello, %s. You are %s." % (name, age)
'Hello Eric. You are 74.'

上面兩個實例還比較好理解,但當(dāng)使用多個參數(shù),字符串變得很長時,可讀性會下降;因為冗長易導(dǎo)致錯誤,故不建議使用。

1.2. 使用 str.format()方法

這種較新的方式是Python2.6版本提供的。是%格式化的升級方式。使用正常的方法調(diào)用實現(xiàn)字符串轉(zhuǎn)換。其內(nèi)部通過類的__format__() 方法實現(xiàn)。使用時被替換的地方使用花括號標(biāo)記。

下面看個示例:

>>> "Hello, {}. You are {}.".format(name, age)
'Hello, Eric. You are 74.'

也可以通過索引方式引用變量:

>>> "Hello, {1}. You are {0}.".format(age, name)
'Hello, Eric. You are 74.'

但如果使用變量名作為參數(shù),而對于值也是對象屬性,則需要在實際參數(shù)中傳入對象。

>>> person = {'name': 'Eric', 'age': 74}
>>> "Hello, {name}. You are {age}.".format(name=person['name'], age=person['age'])
'Hello, Eric. You are 74.'

我們也可以使用**進行簡化字典傳輸:

>>> person = {'name': 'Eric', 'age': 74}
>>> "Hello, {name}. You are {age}.".format(**person)
'Hello, Eric. You are 74.'

str.format方式對%格式化進行了有限的升級,但仍不是最好的。當(dāng)傳入多個參數(shù)時,還是很冗余且易錯。如果字典值傳遞給.format()變量,可以用.format(**some_dict)對其解包,并使用鍵索引對應(yīng)值,但是有更好的辦法進行處理。

2. 增強版字符串格式化方式 f-Strings

f-Strings可以解決上述問題,而且容易使用且十分有效。2015年8月在Python3.6版中提供。
也稱為格式化字符串自變量,f開頭的字符串中花括號括起來的變量會被替換。該表達式在運行時被評估并使用__format__方法進行格式化。下面看一些示例:

>>> name = "Eric"
>>> age = 74
>>> f"Hello, {name}. You are {age}."
'Hello, Eric. You are 74.'

與str.format()方法類似但更簡潔。使用大寫字符F也行:

>>> F"Hello, {name}. You are {age}."
'Hello, Eric. You are 74.'

2.1. 格式化任意表達式

因為f-string是在運行時評估,因此可以放入任何有效Python表達式,這可以實現(xiàn)漂亮的任務(wù)。

>>> f"{2 * 37}"
'74'

直接調(diào)用函數(shù):

>>> def to_lowercase(input):
...  return input.lower()

>>> name = "Eric Idle"
>>> f"{to_lowercase(name)} is funny."
'eric idle is funny.'

干脆直接調(diào)用方法:

>>> f"{name.lower()} is funny."
'eric idle is funny.'

當(dāng)然也可以是自定義類。假設(shè)我們定義下面類:

class Comedian:
 def __init__(self, first_name, last_name, age):
  self.first_name = first_name
  self.last_name = last_name
  self.age = age

 def __str__(self):
  return f"{self.first_name} {self.last_name} is {self.age}."

 def __repr__(self):
  return f"{self.first_name} {self.last_name} is {self.age}. Surprise!"

調(diào)用方法代碼:

>>> new_comedian = Comedian("Eric", "Idle", "74")
>>> f"{new_comedian}"
'Eric Idle is 74.'

str() 和 repr() 方法用于實現(xiàn)以字符串形式表示對象。所以類定義時確保至少包括它們中的一個。如果需要挑選一個,則為 repr(),因為在使用__str__()的地方都可以使用__repr__()。

由__str__()返回的字符串是對象的非正式字符串表示,應(yīng)該是可讀的。由__repr__()返回的字符串是官方表示,應(yīng)該是明確的(外層多了引號,長度是原來長度+2)。直接調(diào)用str()和repr()比直接使用_str__()和_repr__()要好。

缺省情況下使用str函數(shù),但可以使用!r標(biāo)識明確調(diào)用repr:

>>> f"{new_comedian}"
'Eric Idle is 74.'
>>> f"{new_comedian!r}"
'Eric Idle is 74. Surprise!'

2.2. 多行f-strings

我們可以格式化多行字符串:

>>> name = "Eric"
>>> profession = "comedian"
>>> affiliation = "Monty Python"
>>> message = (
...  f"Hi {name}. "
...  f"You are a {profession}. "
...  f"You were in {affiliation}."
... )
>>> message
'Hi Eric. You are a comedian. You were in Monty Python.'

但需要在每行前面增加f。下面代碼不工作:

>>> message = (
...  f"Hi {name}. "
...  "You are a {profession}. "
...  "You were in {affiliation}."
... )
>>> message
'Hi Eric. You are a {profession}. You were in {affiliation}.'

我們看到?jīng)]有f的行沒有被解析。

對于多行我們也可以使用反斜杠進行換行:

>>> message = f"Hi {name}. " \
...   f"You are a {profession}. " \
...   f"You were in {affiliation}."
...
>>> message
'Hi Eric. You are a comedian. You were in Monty Python.'

但如何使用三個分號“““:

>>> message = f"""
...  Hi {name}. 
...  You are a {profession}. 
...  You were in {affiliation}.
... """
...
>>> message
'\n Hi Eric.\n You are a comedian.\n You were in Monty Python.\n'

3. 總結(jié)

本文介紹了Python3.6提供的增強字符串格式化方法。通過與之前的兩種方法對比,f-string缺省更加簡潔、易讀。

到此這篇關(guān)于Python3中的f-Strings增強版字符串格式化方法的文章就介紹到這了,更多相關(guān)Python格式化字符串f-string內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django框架登錄加上驗證碼校驗實現(xiàn)驗證功能示例

    Django框架登錄加上驗證碼校驗實現(xiàn)驗證功能示例

    這篇文章主要介紹了Django框架登錄加上驗證碼校驗實現(xiàn)驗證功能,結(jié)合實例形式分析了Django框架基于Pillow模塊的圖形驗證碼生成與使用相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • Python利用Beautiful Soup模塊創(chuàng)建對象詳解

    Python利用Beautiful Soup模塊創(chuàng)建對象詳解

    這篇文章主要介紹了Python利用Beautiful Soup模塊創(chuàng)建對象的相關(guān)資料,文中介紹的非常詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Python實現(xiàn)畫圖軟件功能方法詳解

    Python實現(xiàn)畫圖軟件功能方法詳解

    這篇文章主要介紹了 Python實現(xiàn)畫圖軟件功能方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 淺談keras使用中val_acc和acc值不同步的思考

    淺談keras使用中val_acc和acc值不同步的思考

    這篇文章主要介紹了淺談keras使用中val_acc和acc值不同步的思考,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python CVXOPT模塊安裝及使用解析

    Python CVXOPT模塊安裝及使用解析

    這篇文章主要介紹了Python CVXOPT模塊安裝及使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • python實現(xiàn)數(shù)組平移K位問題

    python實現(xiàn)數(shù)組平移K位問題

    這篇文章主要介紹了python實現(xiàn)數(shù)組平移K位問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python中from…import *和import區(qū)別小結(jié)

    Python中from…import *和import區(qū)別小結(jié)

    本文介紹了Python中import和from...import兩種導(dǎo)入模塊的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • 在python3中實現(xiàn)查找數(shù)組中最接近與某值的元素操作

    在python3中實現(xiàn)查找數(shù)組中最接近與某值的元素操作

    今天小編就為大家分享一篇在python3中實現(xiàn)查找數(shù)組中最接近與某值的元素操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python爬蟲分析微博熱搜關(guān)鍵詞的實現(xiàn)代碼

    Python爬蟲分析微博熱搜關(guān)鍵詞的實現(xiàn)代碼

    這篇文章主要介紹了Python爬蟲分析微博熱搜關(guān)鍵詞的實現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Python實現(xiàn)Smtplib發(fā)送帶有各種附件的郵件實例

    Python實現(xiàn)Smtplib發(fā)送帶有各種附件的郵件實例

    本篇文章主要介紹了Python實現(xiàn)Smtplib發(fā)送帶有各種附件的郵件實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論