Строка 'in' оператор в CPython - PullRequest
0 голосов
/ 12 апреля 2020

Насколько я понимаю, когда я делаю 'foo' in 'abcfoo' в Python, интерпретатор пытается вызвать 'abcfoo'.__contains_('foo') под капотом.

Это операция сопоставления строк (или поиск), которая принимает несколько алгоритмов, например:

enter image description here

Как узнать, какой алгоритм может использовать данная реализация? (например, Python 3,8 с CPython). Я не могу получить эту информацию, например, исходный код для CPython для строки. Я не знаком с его базой кода, и, например, я не могу найти __contains__, определенный для него.

1 Ответ

2 голосов
/ 12 апреля 2020

Согласно исходному коду :

/* fast search/count implementation, based on a mix between boyer-
   moore and horspool, with a few more bells and whistles on the top.
   for some more background, see: http://effbot.org/zone/stringlib.htm */

Эта ссылка предполагает, что он используется в find, index, split, replace, __contains__, хотя он может быть уже устаревшим.

...