<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          (附代碼)正確使用 Python f-string 格式化字符串的 7 個層級

          共 3994字,需瀏覽 8分鐘

           ·

          2021-09-16 08:13

          點擊左上方藍字關(guān)注我們



          一個專注于目標檢測與深度學(xué)習(xí)知識分享的公眾號

          編者薦語
          f-string是Python 3.6推出的一種簡單而不同的字符串格式技術(shù),可以優(yōu)雅地表達Python字符串。除非您仍在使用舊的 Python 版本,否則在格式化字符串時,f 字符串絕對應(yīng)該是您的首選。因為它可以通過一個迷你語法滿足您的所有要求,甚至運行字符串的表達式。
          轉(zhuǎn)載自 | 咸魚學(xué)Python


          作者:楊周

          譯者:大江狗

          原文:7 Levels of Using F-Strings in Python | by Yang Zhou


          本文將深入探討這項技術(shù)從初級到深度的7個層次。在了解它們之后,您可能會成為字符串格式化大師。


          1. 輕松從變量顯示值

          使用 f 字符串只需要做兩件事:

          • 在字符串前添加一個小寫的f;

          • 使用f字符串中以{variable_name}插值變量.


          name = 'Yang'title = 'full stack hacker'print(f'{name} is a {title}.')# Yang is a full stack hacker.


          如上所示,在 f 字符串機制的幫助下,我們可以編寫簡單且更少的代碼,以便在字符串中顯示更多代碼。它完美地呼應(yīng)了 Python 的禪宗。

          "簡單總比復(fù)雜好。

          2. 數(shù)字格式化

          有時僅僅顯示原始值可能無法滿足我們的需求,但是直接修改原始變量通常不是個好主意,因為變量可能在其他地方使用。不用擔心,Python f字符串還支持"格式規(guī)范迷你語言",它使我們能夠根據(jù)自己喜歡的方式在 f 字符串中格式化值,尤其是數(shù)字。


          pi = 3.1415926print(f'Pi is approximately equal to {pi:.2f}')# Pi is approximately equal to 3.14
          id = 1 # need to print a 3-digit numberprint(f"The id is {id:03d}")# The id is 001
          N = 1000000000 # need to add separatorprint(f'His networth is ${N:,d}')# His networth is $1,000,000,000


          以上示例僅顯示了冰山一角。對于格式規(guī)格語法的完整列表,相應(yīng)的官方文檔是您最好的朋友。


          3. 正確打印特殊字符

          我們可以通過 f 字符串打印這些字符或其他特殊字符嗎?比如''{}。是的,當然。但語法有點棘手。讓我們來看看。


          3.1 打印引號

          正如我們所知,反斜線\是常用的轉(zhuǎn)義字符,用于調(diào)用對其以下字符的替代解釋。對于 f 字符串,我們需要注意一條規(guī)則:\在 f 字符串表達式的括號{}中不起作用。


          name = 'Yang'# Correct Way:print(f'\'{name}\' is a full stack hacker.')# 'Yang' is a full stack hacker.
          # 錯誤方式:print(f'{\'name\'} is a full stack hacker.')# SyntaxError: f-string expression part cannot include a backslash



          3.2 打印雙括號{}

          用 f字符串打印{}的方法是不同的, 非常容易出bug。這次我們不能使用反斜線。


          name = 'Yang'
          # 1print(f'{name} is a full stack hacker.')# 'Yang' is a full stack hacker.
          # 2print(f'{{name}} is a full stack hacker.')# {name} is a full stack hacker.
          # 3print(f'{{{name}}} is a full stack hacker.')# {Yang} is a full stack hacker.
          # 4print(f'{{{{name}}}} is a full stack hacker.')# {{name}} is a full stack hacker.
          # 5print(f'{{{{{name}}}}} is a full stack hacker.')# {{Yang}} is a full stack hacker.


          如上例所示,該變量是作為f-字符串的括號還是變量處理取決于其周圍的括號數(shù)。如果您不知道這種奇怪的機制,則容易出現(xiàn)錯誤。


          3.3 打印反斜線\

          打印反斜線\很簡單:只需使用雙反斜線打印。但是不要將它們添加到 f 字符串表達式括號當中。


          name = 'Yang'
          print(f'\\{name}\\ is a full \\stack hacker.')# \Yang\ is a full \stack hacker.
          #錯誤的print(f'{\\name\\} is a full \\stack hacker.')# SyntaxError: f-string expression part cannot include a backslash



          4. 小心打印字典值

          將字典的值應(yīng)用到 f 字符串中也容易出現(xiàn)錯誤。我們必須使用不同的引號來描述字典鍵和 f 字符串,如下所示。如果f字符串用雙引號表示,那么變量里的字典鍵必須用單引號。


          Hacker = {'name': 'Yang'}
          print(f"{Hacker['name']} is a hacker")# Yang is a hackerprint(f'{Hacker["name"]} is a hacker')# Yang is a hackerprint(f'{Hacker['name']} is a hacker')# 語法錯誤 SyntaxError: invalid syntaxprint(f"{Hacker["name"]} is a hacker")# 語法錯誤 SyntaxError: invalid syntax


          如上所示,如果我們對鍵名和 f 字符串都使用相同的單引號或雙引號, Python 會對我們的代碼感到困惑, 從而報錯。


          5. 正確處理多行 F 字符串

          為了使我們的代碼更易讀,有必要使用多行書寫一長串字符。但如果是 f 字符串,不要忘記在每行之前添加f。


          ame = 'Yang'
          # 錯誤方式print(f"{name} is a hacker." "{name} is also a top writer." "{name} writes on Medium." )# Yang is a hacker.{name} is also a top writer.{name} writes on Medium.
          # 正確方式print(f"{name} is a hacker." f"{name} is also a top writer." f"{name} writes on Medium." )# Yang is a hacker.Yang is also a top writer.Yang writes on Medium.



          6. 像大師一樣顯示日期和時間

          如果我們需要打印日期或時間,f 字符串將再次告訴我們它是多么方便:


          from datetime import datetimetoday = datetime.today()print(f"Today is {today}")# Today is 2021-07-31 18:20:48.956829print(f"Today is {today:%B %d, %Y}")# Today is July 31, 2021print(f"Today is {today:%m-%d-%Y}")# Today is 07-31-2021


          如上例所示,在 f 字符串的幫助下,我們可以使用我們?nèi)魏蜗矚g的格式打印日期或時間。


          7. 評估 F 字符串內(nèi)的表達式

          當我第一次知道 f 字符串時, 我簡直不敢相信:我們可以在 f 字符串內(nèi)運行 Python 表達式。如果是真的,還算是字符串嗎?


          我仔細閱讀了 PEP 498,終于明白了:

          F 字符串提供了一種將表達式嵌入字符串字面的方法。需要注意的是,f 字符串實際上是在運行時間評估的表達方式,而不是恒定的值。

          因此,f 字符串與普通字符串不同,此功能賦予它更大的能力。例如,我們可以在它里面運行一個顯示時間的功能。


          from datetime import datetime
          print(f"Today is {datetime.today()}")# Today is 2021-07-31 18:20:48.956829




          結(jié)論

          Python 中的 f-string是一個偉大的字符串格式化技術(shù), 顯示了 Python 是多么優(yōu)雅。它非常強大,因為它不是一個普通的字符串,而是在運行時可以表達的字符串。對于一些特殊情況,它有特殊的規(guī)則,我們需要謹慎使用它。


          END



          雙一流大學(xué)研究生團隊創(chuàng)建,專注于目標檢測與深度學(xué)習(xí),希望可以將分享變成一種習(xí)慣!

          整理不易,點贊支持一下吧↓

          瀏覽 56
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品日韩欧美一级极品欧美日韩一级精品 | 操碰在线 | 射逼逼网 | 成人视频大香蕉 | а√中文官网在线8 |