成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 改進 f-strings 語法,解除封印,整合到統一的解析器中

開發 前端
Python 團隊意識到,從語言用戶的角度來看,這些限制沒有任何意義,所以他們目前通過賦予 f-strings 字面量一個沒有例外的常規語法,并使用專用的解析代碼來實現它,從而消除這些限制。

在將于 10 月初發布的 Python 3.12 中,我們將看到 f-strings 語法帶來了一些變化,新版取消了最初制定 f-strings 時制定的一些限制。經過這些變化,使得 f-strings 更加統一,成為一種可以直接整合到解析器中的正式化語法。這將會為終端用戶和庫開發者帶來較大優勢,同時也大大降低用于解析 f-strings 代碼的維護成本。

最初設置 f-strings 限制是為了能夠在不修改現有詞法分析器的情況下將 f-strings 的解析實現到 CPython 中。但目前來看,這些限制反而帶來了復雜性。比如:

  1. 在表達式部分中,無法使用引號字符來界定 f-strings
>>> f'Magic wand: { bag['wand'] }'
                             ^
SyntaxError: invalid syntax
  1. 之前考慮過的一種解決方法會導致在執行的代碼中出現轉義序列,這在 f-strings 中是被禁止的:
>>> f'Magic wand { bag[\'wand\'] } string'
SyntaxError: f-string expression portion cannot include a backslash
  1. f-strings 中無法使用注釋語法:
>>> f'''A complex trick: {
... bag['bag']  # recursive bags!
... }'''
SyntaxError: f-string expression part cannot include '#'
  1. 許多其它語言表達式字符串插值都支持不擴展轉義序列的任意嵌套。比如:
# Ruby
"#{ "#{1+2}" }"

# JavaScript
`${`${1+2}`}`

# Swift
"\("\(1+2)")"

# C#
$"{$"{1+2}"}"

Python 團隊意識到,從語言用戶的角度來看,這些限制沒有任何意義,所以他們目前通過賦予 f-strings 字面量一個沒有例外的常規語法,并使用專用的解析代碼來實現它,從而消除這些限制。

f-strings 的另一個問題是,CPython 中的當前實現依賴于將 f-strings 標記化為 STRING 令牌,并對這些令牌進行后處理。這帶來了以下問題:

  1. 它給 CPython 解析器增加了相當大的維護成本。這是因為解析代碼需要手動編寫,這在歷史上導致了大量的不一致性和錯誤。在 C 中手動編寫和維護解析代碼一直被認為是容易出錯和危險的,因為它需要處理大量的原始詞法分析器緩沖區上的手動內存管理。
  2. f-strings 解析代碼無法使用新的 PEG 解析器所允許的新錯誤消息機制,這些錯誤消息帶來的改進已經受到了熱烈歡迎,但因為 f-strings 用的是獨立解析器,所以無法使用上新改進的錯誤消息機制。另外,因為 f-strings 有幾個語法特性可能會因為在表達式部分內部發生的不同隱式標記化而令人困惑(例如 f"{y:=3}" 并不是一個賦值表達式)。
  3. 其它 Python 實現無法知道它們是否正確實現了 f-strings,因為它們并不是官方 Python 語法的一部分。這一點很重要,因為有幾個知名的替代實現正在使用 CPython 的 PEG 解析器,如 PyPy。f-strings 使用一個獨立的解析器,阻止了這些替代實現利用官方語法,以及從改進的錯誤消息機制中受益。

期待新 f-strings 能用得更順心。

具體情況可以查看 PEP-701:https://peps.python.org/pep-0701

責任編輯:武曉燕 來源: OSCHINA
相關推薦

2022-02-15 16:51:57

Pythonf-strings字符串

2021-12-09 15:25:15

Pythonf-strings字符串

2021-10-19 06:58:57

Python格式化f-strings

2023-02-10 08:13:56

Pythonf-strings

2023-03-24 16:11:02

2019-09-03 16:00:30

戴爾

2010-02-22 16:51:03

Python 解析器

2010-02-22 13:38:50

Python解析器

2025-03-05 11:23:44

2011-07-01 13:46:55

服務器整合

2011-02-24 13:52:46

Opera 11HTML5

2022-10-20 11:00:52

SQL解析器

2009-03-19 09:26:05

RSS解析器MagpieRSS

2014-05-15 09:45:58

Python解析器

2023-12-30 13:33:36

Python解析器JSON

2014-05-06 09:27:54

2022-02-14 13:58:32

操作系統JSON格式鴻蒙

2021-03-16 10:39:29

SpringBoot參數解析器

2019-07-05 08:39:39

GoSQL解析器

2011-07-06 15:44:26

iPhone XCode Leopard
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久精品视频一区二区三区 | 国产亚洲欧美在线 | 成人精品一区二区三区 | 国产天天操 | 精品视频一区二区三区在线观看 | 久久国产精品久久久久久 | 亚洲精品日韩欧美 | 日韩在线观看中文字幕 | 国产传媒视频在线观看 | 黄色欧美大片 | 欧美一区二区免费 | 免费超碰 | 国产精品一区二区欧美黑人喷潮水 | 性大毛片视频 | 免费视频一区 | 国产亚洲第一页 | 黄色国产视频 | 亚洲五码在线 | 久久久视 | 午夜视频一区二区 | 91影视| 国产一区二区在线视频 | 欧美日韩视频在线播放 | 能看的av网站| 毛片一区二区三区 | 久久国产视频播放 | 午夜电影一区二区 | 成人在线精品 | 久久亚洲欧美日韩精品专区 | 精品成人一区二区 | 欧美一区二区三区在线观看 | 亚洲精品一区二区三区四区高清 | 欧美在线一区视频 | 精国产品一区二区三区四季综 | 在线播放91| 一二三四在线视频观看社区 | 久久精品国产v日韩v亚洲 | 7777在线| 北条麻妃一区二区三区在线观看 | 免费三级网 | 国产一区二区 |