这是我在试图理解的Python模块中遇到的一个“有趣”的现象,而不是请求帮助(尽管解决方案也很有用)。
>>> import fuzzy
>>> s = fuzzy.Soundex(4)
>>> a = "apple"
>>> b = a
>>> sdx_a = s(a)
>>> sdx_a
'A140'
>>> a
'APPLE'
>>> b
'APPLE'
是的,所以fuzzy模块完全违反了Python中字符串的不可变性。它是否能够这样做,因为它是C扩展?这是否构成了CPython和模块中的错误,甚至是安全风险?
还有,有人能想出一个办法来避开这种行为吗?我希望能够保持字符串的原始资本化。
干杯,
亚历克斯
最佳答案
此错误已解决,请更新您的版本。
要回答您的问题,有几种方法可以在C级别修改不可变类型。在这一点上,安全影响是未知的,甚至可能是不可知的。