我正在使用內置的 isidentifier() 函式來查找變數名允許使用的 Unicode 字符(我知道 xid_start 和 xid_continue 字符,不需要對此進行解釋)。以下程式與它在不同系統上的結果存在一定的不一致。我對推理非常困惑和感興趣。
chars = []
for char in range(0x110000):
char = chr(char)
if char.isidentifier() or ('a' char).isidentifier():
chars = [char]
print(len(chars))
在 PyCharm 中運行的程式結果給我 134415,但在 repl 上運行它給我128770。我的 python 版本是 3.9.7,而 repl 是 3.8.12。我能找到的一切都是這個isidentifier() 檔案,它暗示了 Python 3 中使用的PEP 3131標準。但是我和repl.it都使用相同的主要 python 版本,只是版本差異很小。尋找功能變更日志也沒有結果。希望你能幫我解決這個問題!
uj5u.com熱心網友回復:
他們使用不同版本的 unicode 資料
嘗試添加到您的腳本
import unicodedata
print(unicodedata.unidata_version)
對我來說,repl.it 使用的是 12.1.0 版,而我在 mac 12.3 上的 python 3.9.9 使用的是 13.0.0 版
您鏈接到的 pep 表示字符取決于 python 使用的 unicode 版本中的 DerivedCoreProperties.txt 檔案
版本 12.1.0 版本 13.0.0
哪些字符具有 XID_Start 或 XID_Continue 屬性的確切說明可以在 Python 使用的 Unicode 資料的 DerivedCoreProperties 檔案中找到
這符合 unicodedata 模塊在其檔案中所說的內容。
使用python 3.8時
此資料庫中包含的資料是從 UCD 版本 12.1.0 編譯而來的。
使用python 3.9時
此資料庫中包含的資料是從 UCD 版本 13.0.0 編譯而來的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/484296.html
標籤:Python python-3.x 内置
上一篇:多列上的類別條件
