是否期望将Python对象的epsilon命名属性默默地变成varepsilon?

问题描述 投票:0回答:1

如果我使用点表达式为 Python 对象创建名为 ϵ 的属性,该名称将转换为 ε 且不会发出任何警告。

这是预期的吗?如果是的话,我在哪里可以找到这方面的参考资料?

Python 3.12.5 (main, Aug  7 2024, 13:49:14) [GCC 14.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = type('',(),{})()
>>> a.ϵ = 100
>>> hasattr(a,'ϵ')
False
>>> hasattr(a,'ε')
True
>>> setattr(a,'ϵ',200)
>>> hasattr(a,'ϵ')
True
>>> a.ϵ
100
>>> 
python python-3.x python-object
1个回答
1
投票

这两个在正常形式 NFKC 中是相同的标识符。

>>> unicodedata.normalize("NFKC", 'ε') == unicodedata.normalize("NFKC", 'ϵ')
True

并且正如文档所说

解析时所有标识符都转换为范式NFKC;标识符的比较基于 NFKC。

© www.soinside.com 2019 - 2024. All rights reserved.