То, что делает этот код, - это получение первой и последней частей письма по отдельности путем разделения письма. Пример:
email = "1234+5678@gmail.com"
//local is now 1234+5678. domain is gmail.com
local, domain = email.split('@')
Теперь, следующий бит кода (который вы специально задали в своем вопросе) :
if '+' in local:
local = local[:local.index('+')]
То, что он делает, это , если +
находится в local
, он получает индекс этого +
и устанавливает local
равным символам перед ним . В противном случае local
останется без изменений. В этом случае local будет теперь 1234
, потому что local.index('+')
возвращает 4
. Следовательно, local = local[0:4]
устанавливает local
равным первым 4 символам.
Последний бит кода:
seen.add(local.replace('.','') + '@' + domain)
return len(seen)
Для этого нужно заменить символ .
в local
пустым символом. Затем он добавляет обратно @
, который был первоначально разделен, а также domain
, который в этом примере был gmail.com
. Итак, теперь seen
должно равняться: 1234@gmail.com
. Затем он возвращает длину seen
, которая равна 14
. Я надеюсь, что этот ответ дал вам понимание того, что делает код.