Bu benim (bir çözüm de yararlı olur gerçi) Doğrusu yardım isteği yerine, anlamaya çalışıyorum bir Python modülü karşılaşılan bir 'ilginç' olayların daha ihlal etti.dize değişmezlik
>>> import fuzzy
>>> s = fuzzy.Soundex(4)
>>> a = "apple"
>>> b = a
>>> sdx_a = s(a)
>>> sdx_a
'A140'
>>> a
'APPLE'
>>> b
'APPLE'
Evet, yani fuzzy modül tamamen Python dizeleri değişmezliği ihlal eder. Bunu yapmak mümkün mü, çünkü bir C uzantısı mı? Ve bu, hem CPython'da hem de modülde ve hatta bir güvenlik riskinde bir hata oluşturuyor mu?
Ayrıca, herkes bu davranıştan kurtulmanın bir yolunu düşünebilir mi? Dizenin orijinal büyük harflerini saklamak istiyorum.
Alkış,
Alex
Üretilen C içinde dizgeyi değiştirdiği hiçbir yerde göremiyorum. –
@ IgnacioVazquez-Abrams: belki bir şeyleri özlüyorum, ama '__call__' ['__pyx_f_5fuzzy_7Soundex ___ call__']' da değiştirmiyor mu? PyString_AsString çağrısının sonucuna eşit olarak ayarladığı bir cdef char ptr bildirir ve sonra içeriği değiştirir. – DSM
@DSM: Bitbucket'teki kodda değil. Sadece okunanları görüyorum, [891] satırında (https://bitbucket.org/yougov/fuzzy/src/c210ad2f3f68/src/fuzzy.c#cl-891). –