Pull to refresh
2
0
Анатолий Панин @toly

python

Send message
Для этого подойдет лемматизация — приведение слова к нормальной форме
Можно сразу сохранять user.media.nodes[0].code из https://www.instagram.com/username/?__a=1
Хотя… Если для каждого пользователя хранить какую-либо картинку (идентификатор картинки), то получив информацию о картинке, можно узнать новое имя пользователя
Знаю только способы с использованием приватного или официального апи
Перепутал — выдаются более ранние картинки
С тегами не проверял, но про страницу геолокации (https://www.instagram.com/explore/locations/278324317/) точно могу сказать, что фид меняется и в случае использования start_cursor, в случае использования end_cursor. Причем если смотреть на время картинок, то всегда выдаются более поздние картинки (и при start_cursor, и при end_cursor)
Информацию о пользователе можно получить сразу в JSON: https://www.instagram.com/kevin/?__a=1

Тоже самое с отдельным постом: https://www.instagram.com/p/BGBgSw0tpHQ/?__a=1
А если понадобится поддержка китайского, будете для каждого варианта добавлять по строчке? А если вариантов 10? А я как раз упомянул, что такой код я написал бы в случае большого количества вариантов.
Зачем делать ключами actions_map кортежи и потом еще и итерироваться по ним, когда уже есть мап?

Не понимаю о чем речь.

Чтобы сэкономить пару строчек когда?

Если получается без особых усилий сэкономить хотя бы одну строчку (без ущерба читаемости конечно), то я обычно экономлю.
А читающий ваш код будет думать, что вы откуда‐то будете брать («y», «Y», «д», «Д»), а не то, что вам нужен список пар.

Сомневаюсь что читающий код начнет пристально вглядываться в actions_map вне контекста его использования.

Словарь предполагает, что основной или один из основных методов доступа — __getitem__, а вы его не
собираетесь использовать.

Словарь предполагает, а программист располагает. В оригинале звучит как, программировать нужно не на языке, а с использованием языка.

Вообще, свое решение привел для того что бы:

  • показать пример легко расширяемого кода — легко добавлять новые варианты и увеличивать размер кода для условий
  • структурированный код (перекликается с расширяемостью) — легко можно найти какие варианты есть вообще и куда вносить изменения
  • использование функций как объектов
  • как бонус — отсутсвие повторяющихся if-ов


А приведённый в статье там не работает.

Я не ставил целью кого-либо запутать. Я работаю с 2.7.
Если нужно итерировать парами значений, то я стараюсь на всякий случай использовать словарь, потому что так проще красивее получить доступ к списку только первых или к списку только вторых значений.

P.S. Код работает для python 2.7
Если бы было больше ветвлений и/или в блоках условий было бы больше чем одна строка, я бы сделал так:

# coding: utf-8

def positive_answer(response):
    print("Положительный ответ: {}".format(response))

def negative_answer(response):
    print("Отрицательный ответ: {}".format(response))

def incorrect_answer(response):
    print("Введено некорректное значение: {}".format(response))

actions_map = {
    ("y", "Y", "д", "Д"): positive_answer,
    ("n", "N", "н", "Н"): negative_answer,
}


def are_you_sure4():
    while True:
        print("Вы уверены? [Д/н (Y/n)]: ")
        response = raw_input()

        for options, action in actions_map.iteritems():
            if response in options:
                action(response)
                break
        else:
            incorrect_answer(response)

are_you_sure4()

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity