亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python3中的f-Strings增強(qiáng)版字符串格式化方法

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

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

1. 舊式字符串格式化

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

1.1 %-格式化

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

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

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

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

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

上面兩個(gè)實(shí)例還比較好理解,但當(dāng)使用多個(gè)參數(shù),字符串變得很長(zhǎng)時(shí),可讀性會(huì)下降;因?yàn)槿唛L(zhǎng)易導(dǎo)致錯(cuò)誤,故不建議使用。

1.2. 使用 str.format()方法

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

下面看個(gè)示例:

>>> "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ù),而對(duì)于值也是對(duì)象屬性,則需要在實(shí)際參數(shù)中傳入對(duì)象。

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

我們也可以使用**進(jìn)行簡(jiǎn)化字典傳輸:

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

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

2. 增強(qiáng)版字符串格式化方式 f-Strings

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

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

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

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

2.1. 格式化任意表達(dá)式

因?yàn)閒-string是在運(yùn)行時(shí)評(píng)估,因此可以放入任何有效Python表達(dá)式,這可以實(shí)現(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() 方法用于實(shí)現(xiàn)以字符串形式表示對(duì)象。所以類定義時(shí)確保至少包括它們中的一個(gè)。如果需要挑選一個(gè),則為 repr(),因?yàn)樵谑褂胈_str__()的地方都可以使用__repr__()。

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

缺省情況下使用str函數(shù),但可以使用!r標(biāo)識(shí)明確調(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的行沒有被解析。

對(duì)于多行我們也可以使用反斜杠進(jìn)行換行:

>>> 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.'

但如何使用三個(gè)分號(hào)“““:

>>> 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提供的增強(qiáng)字符串格式化方法。通過與之前的兩種方法對(duì)比,f-string缺省更加簡(jiǎn)潔、易讀。

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

相關(guān)文章

最新評(píng)論