婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python 的 f-string 可以連接字符串與數字的原因解析

Python 的 f-string 可以連接字符串與數字的原因解析

熱門標簽:騰訊地圖標注有什么版本 400電話辦理費用收費 鎮江人工外呼系統供應商 千呼ai電話機器人免費 高德地圖標注字母 申請辦個400電話號碼 柳州正規電銷機器人收費 外呼系統前面有錄音播放嗎 深圳網絡外呼系統代理商

本文出自“Python為什么”系列,歸檔在 Github 上:https://github.com/chinesehuazhou/python-whydo

毫無疑問,Python 是一門強類型語言。強類型語言。強類型語言!(關于強弱類型話題,推薦閱讀這篇 技術科普文)

這就意味著,不同類型的對象通常需要先做顯式地類型轉化, 然后才能進行某些操作。

下面以字符串和數字為例,看看強行操作會產生什么結果:

>>> "Python貓" + 666
Traceback (most recent call last):
 File "stdin>", line 1, in module>
TypeError: can only concatenate str (not "int") to str

它報類型錯誤了(TypeError),說字符串只能連接(concatenate)字符串,不能連接 int 類型。 這正是強類型語言的基本約束。

但是,如果我們先把數字“轉化”成字符串類型,再執行“+”操作,就不會報錯了:

>>> "Python貓" + str(666)
'Python貓666'

上面的這個例子,對讀者們來說,應該并不難理解。

由此,我們要引出一個問題:如何在不作顯式類型轉化的情況下,進行字符串與數字類型的拼接呢?

在《詳解Python拼接字符串的七種方式》這篇文章中,它梳理了七種拼接字符串的寫法,我們可以逐個來試驗一下。

幾種字符串拼接方式:

1、格式化類:%、format()、template

2、拼接類:+、()、join()

3、插值類:f-string

為了節省篇幅,此處直接把可以順利拼接的 4 種寫法羅列如下:

>>> "%s %d" % ("Python貓", 666)
'Python貓 666'

>>> from string import Template
>>> s = Template('${s1}${s2}')
>>> s.safe_substitute(s1='Python貓',s2=666)
'Python貓666'

>>> "Python貓{}".format(666)
'Python貓666'

>>> num = 666
>>> f"Python貓{num}"
'Python貓666'

第一種寫法(即 % 格式化)來自古老的 C 語言,其中的“%d”是一個占位符,表示它將要接收一個整數,并格式化成字符串。

第二和第三種寫法,它們是第一種寫法的升級版,不同的是,它們的占位符是通用型的,不必指定“%s”、“%d”等等明確的類型。這兩種寫法中,數字類型的參數被傳給特定的格式化方法(即 safe_substitute 與 format),在這些方法的內部,它們會作類型轉化處理。

可以說,上述三種寫法都不難理解,它們的意圖都有跡可循。

但是,現在再看看最后一種寫法,也就是 f-string 寫法,似乎就不是那么明顯了。

首先,在字符串內部,它并沒有像“%格式化”那樣指定占位符的類型;其次,所要拼接的數字并沒有作為任何函數的參數來傳遞。

也就是說,在明面上根本看不出任何要作類型轉化的意圖。但是,由于我們已知 Python 是強類型語言,已知數字類型絕對不可能直接拼接到字符串里,因此,只能說明 f-string 語法在底層作了某種類型轉化的操作!

那么,我們就可以再提出一個新的問題:f-string 語法在處理字符串與數字時,是如何實現數字的類型轉化的呢?

也許有的讀者會猜想它是調用了內置的 str() 或 repr()(或它們對應的魔術方法__str__() 與 __repr__()),從而實現類型轉化,但是,答案并沒有如此簡單!

f-string 語法是在 Python 3.6 版本引入的。為了省事,我們直接找到 PEP-498 文檔,在里面查閱看是否有關于實現原理的線索。

文檔地址:https://www.python.org/dev/peps/pep-0498

PEP 里提到,f-string 的語法格式是這樣的:

f'text> { expression> optional !s, !r, or !a> optional : format specifier> } text> ...'

其中,花括號里的內容就是要作格式化的內容,除去可選的“optional”部分后,“expression”部分就是真正要處理的內容。對應前文的例子,數字 666 就是一個 expression。

expression 會按 __format__ 協議進行格式化,但是并不會直接調用 __format__() 這個方法。

文檔上指出,實際的執行過程等效于type(value).__format__(value, format_spec) 或者 format(value, format_spec)

事實上,字符串對象的 foramt() 方法跟 Python 內置的 foramt() 函數,它們都會調用__format__() 魔術方法,所以,f-string 其實是前文中 format() 格式化寫法的升級版。

在默認情況下,format_spec 是一個空字符串,而format(value, "") 的效果等同于str(value) ,因此,在不指定其它 format_spec 的情況下,可以簡單地認為 f-string 就是調用了 str() 來作的類型轉化……

至此,我們看到了 f-string 的實現原理,明白了它在拼接字符串與數字時,效果等效于前文的 format() 格式化方法,也等效于使用 str() 進行類型轉化。

寫在最后:本文屬于“Python為什么”系列(Python貓出品),該系列主要關注 Python 的語法、設計和發展等話題,以一個個“為什么”式的問題為切入點,試著展現 Python 的迷人魅力。更多精彩文章,請移步 Github 查看,項目地址:https://github.com/chinesehuazhou/python-whydo

到此這篇關于Python 的 f-string 可以連接字符串與數字的原因解析的文章就介紹到這了,更多相關Python f-string 連接字符串與數字內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 詳解Python中string模塊除去Str還剩下什么
  • Python字符串格式化f-string多種功能實現
  • Python bytes string相互轉換過程解析
  • Python3中的f-Strings增強版字符串格式化方法
  • python3格式化字符串 f-string的高級用法(推薦)
  • 一文了解python 3 字符串格式化 F-string 用法
  • Python 格式化輸出_String Formatting_控制小數點位數的實例詳解
  • Python StringIO如何在內存中讀寫str
  • python 實現list或string按指定分段
  • Python序列對象與String類型內置方法詳解
  • 詳解python3中用HTMLTestRunner.py報ImportError: No module named ''StringIO''如何解決
  • Python解析json時提示“string indices must be integers”問題解決方法
  • Python將string轉換到float的實例方法
  • python f-string式格式化聽語音流程講解
  • Python格式化字符串f-string概覽(小結)
  • Python的文本常量與字符串模板之string庫

標簽:平頂山 海南 大慶 烏蘭察布 合肥 烏蘭察布 哈爾濱 郴州

巨人網絡通訊聲明:本文標題《Python 的 f-string 可以連接字符串與數字的原因解析》,本文關鍵詞  Python,的,f-string,可以,連接,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python 的 f-string 可以連接字符串與數字的原因解析》相關的同類信息!
  • 本頁收集關于Python 的 f-string 可以連接字符串與數字的原因解析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    男人的天堂亚洲一区| 亚洲国产毛片aaaaa无费看| 色婷婷av久久久久久久| 蜜桃一区二区三区在线| 亚洲免费观看在线观看| 欧美va亚洲va香蕉在线| 欧美日韩综合在线免费观看| 国产91综合一区在线观看| 亚洲一级二级在线| 国产亚洲精品bt天堂精选| 欧美一区二区在线免费播放| 色偷偷88欧美精品久久久| 国产在线乱码一区二区三区| 亚洲午夜视频在线| 1024精品合集| 亚洲国产精品av| 精品国产一二三| 777亚洲妇女| 色综合久久综合中文综合网| 国产91丝袜在线播放九色| 久久99国产精品麻豆| 蜜臀国产一区二区三区在线播放| 亚洲在线视频一区| 一区在线中文字幕| 欧美国产一区在线| 亚洲精品一区二区三区在线观看 | 日本高清不卡在线观看| 国产福利91精品一区二区三区| 蜜桃av一区二区在线观看| 午夜精品123| 性做久久久久久久久| 亚洲最色的网站| 亚洲激情六月丁香| 亚洲天堂av一区| 成人欧美一区二区三区1314| 国产精品久久看| 国产精品国产精品国产专区不蜜| 久久久综合激的五月天| 久久综合色一综合色88| 欧美精品一区二区三区蜜桃| 日韩欧美国产综合一区| 精品久久国产97色综合| 精品理论电影在线观看 | 欧美一区二区在线观看| 91精品欧美综合在线观看最新| 欧美疯狂做受xxxx富婆| 日韩欧美视频在线 | 一区二区三区精品视频在线| 亚洲伊人色欲综合网| 日韩国产欧美视频| 久久国产精品一区二区| 国产精品资源在线| 成人福利视频网站| 色偷偷一区二区三区| 欧美日韩在线播| 日韩欧美在线不卡| 精品久久久三级丝袜| 国产日韩欧美一区二区三区乱码 | 丰满亚洲少妇av| 成人动漫一区二区三区| 97se亚洲国产综合自在线| 欧美三级视频在线播放| 91精品国产综合久久精品| 久久久久国产精品麻豆| 亚洲欧洲三级电影| 亚洲精品乱码久久久久久| 日韩av一级片| 国产69精品久久99不卡| 91在线精品一区二区三区| 欧美乱熟臀69xxxxxx| www亚洲一区| 一区二区三区四区亚洲| 日韩中文字幕不卡| 成人手机电影网| 欧美日韩综合在线| 久久久久久久综合| 亚洲精品一二三| 免费观看在线综合色| 成人天堂资源www在线| 这里只有精品视频在线观看| 国产日韩欧美综合一区| 亚洲国产精品影院| 国产美女在线精品| 欧美亚洲综合另类| 精品国产免费人成电影在线观看四季| 18涩涩午夜精品.www| 美女视频一区二区| 色综合久久中文字幕| 日韩午夜在线观看| 亚洲激情av在线| 国产成人免费在线观看不卡| 这里只有精品99re| 亚洲三级电影网站| 国产一区二区三区综合| 欧美三级午夜理伦三级中视频| 国产精品视频你懂的| 日韩在线a电影| 一本色道久久综合精品竹菊| 精品少妇一区二区三区日产乱码| 亚洲国产aⅴ天堂久久| 成人av在线播放网址| 日韩一区二区在线播放| 夜夜嗨av一区二区三区中文字幕| 丁香婷婷综合五月| 日韩欧美国产一区二区三区| 亚洲一区二区视频在线| 波多野结衣中文字幕一区二区三区 | 日韩一区欧美二区| 色天天综合久久久久综合片| 国产精品你懂的在线| 国产在线视频一区二区| 欧美一区三区二区| 日韩激情一二三区| 欧美日韩在线观看一区二区 | 波多野洁衣一区| 久久久av毛片精品| 精品一区在线看| 日韩精品一区二区三区中文不卡 | 91免费看视频| 中文在线资源观看网站视频免费不卡 | 2023国产精品视频| 日本不卡视频在线观看| 在线国产亚洲欧美| 亚洲欧美一区二区不卡| jlzzjlzz亚洲女人18| 中文字幕五月欧美| 高清beeg欧美| 欧美激情中文不卡| 北条麻妃国产九九精品视频| 欧美激情一区三区| 成人激情校园春色| 一区视频在线播放| 色综合一个色综合亚洲| 亚洲美女淫视频| 在线看一区二区| 亚洲成a人片在线不卡一二三区| 欧美三级视频在线播放| 丝袜亚洲另类欧美| 日韩一区二区精品葵司在线| 蜜臀久久久久久久| 欧美精品一区二区三区视频| 精品一区二区在线观看| 久久精品亚洲精品国产欧美| 国产精品69毛片高清亚洲| 国产精品久久99| 日本高清不卡视频| 午夜精品福利久久久| 欧美大片顶级少妇| 国产白丝精品91爽爽久久| 国产精品看片你懂得| 成人动漫中文字幕| 亚洲在线观看免费视频| 欧美一区二区三区日韩视频| 乱中年女人伦av一区二区| 26uuu色噜噜精品一区二区| 国产乱码字幕精品高清av | 麻豆成人综合网| xnxx国产精品| 色综合久久中文字幕| 日本中文在线一区| 国产婷婷一区二区| 欧美综合亚洲图片综合区| 日本欧美加勒比视频| 中文字幕欧美日韩一区| 91精品办公室少妇高潮对白| 免费欧美在线视频| 国产日韩欧美综合在线| 欧美性一级生活| 黄色日韩三级电影| 亚洲精品中文字幕乱码三区| 日韩美一区二区三区| 成人国产免费视频| 日本一不卡视频| 国产精品视频免费看| 在线不卡免费av| 99精品桃花视频在线观看| 视频一区视频二区在线观看| 欧美高清在线视频| 欧美精品一卡二卡| 99国产精品久| 久久国产尿小便嘘嘘| 一区二区欧美精品| 久久精品综合网| 欧美日韩www| 成人黄色小视频在线观看| 奇米精品一区二区三区在线观看一| 国产精品久久久久久久久久久免费看 | 91精品国产综合久久久久久久| 国产99久久久精品| 久久国产精品72免费观看| 亚洲欧美欧美一区二区三区| 久久嫩草精品久久久精品一| 欧美日韩中文字幕一区二区| 99久久国产综合精品色伊| 国产在线精品视频| 午夜欧美在线一二页| 国产精品国产自产拍高清av| 日韩欧美国产精品一区| 欧美视频你懂的| 91久久国产综合久久|