Ответы пользователя по тегу Python
  • Вопросы на собеседовании программисту Python

    @thenno
    Проектирую, разрабатываю, преподаю.
    Я писал тут основные вопросы для собеседования питонистов: https://thenno.me/blog/python-interview.html
    Ответ написан
    Комментировать
  • Сколько тактов занимает одна операция сложения в python?

    @thenno
    Проектирую, разрабатываю, преподаю.
    Странный вопрос - какие хотя бы типы то собираетесь складывать?

    Если интересует время работы - профилируйте через встроенные в python средства или утилиту time. Если для задачи нужно именно такты считать - тут нужно смотреть на C/ASM или другой системный язык без сборки мусора, но никак не на управляемые скриптовые языки, где вряд ли получится взять и точно узнать, сколько тактов займет та или иная операция, а stop the world для сборки мусора в самый неподходящий момент повесит все приложение.
    Ответ написан
    Комментировать
  • Какие вы можете порекомендовать библиотеки Python для многопоточности?

    @thenno
    Проектирую, разрабатываю, преподаю.
    В Python 3 есть из коробки годный asyncore и asyncio для всякой асинхронщины. Можно копать в эту сторону.
    Ответ написан
    Комментировать
  • Как спарсить строчку по первым трём символам в питоне?

    @thenno
    Проектирую, разрабатываю, преподаю.
    Лучше без регулярок.

    str = "Строка, которую нужно проверить"
    
    return str.startswith('AA') or str.startswith('\\nAA')
    Ответ написан
  • Проблема с Pyscripter?

    @thenno
    Проектирую, разрабатываю, преподаю.
    Мне что-то подсказывает, что у Вас Windows, и Вы открываете файл, в пути которого есть русские символы, нет? Если это так, попробуйте создать путь без кириллицы (например C:/my_scripts/test.py) и посмотреть, не исчезнет ли вышеуказанная ошибка.
    Ответ написан
    Комментировать
  • Как запустить исполняемый файл ubuntu python3.4?

    @thenno
    Проектирую, разрабатываю, преподаю.
    #! /usr/bin/ python3.4

    А зачем пробелы?
    #!/usr/bin/python3.4
    Ответ написан
  • Почему сохраняется значение переменной в функции?

    @thenno
    Проектирую, разрабатываю, преподаю.
    Проходил мимо, да и вопрос давно уже закрыт вроде как, но удержаться я не мог. Проблема с областями видимости тут играет важную роль, но тут еще и вступает в ход другая проблема - не нужно бездумно давать значениям по умолчанию изменяемый тип (про это как раз ссылка от @Cenness). Значение по-умолчанию инициализируется только при первом вызове функции. Что это значит? При первом вызове раз мы инициализировали локальный bar пустым списком, затем его изменили. Затем, при втором вызове, локальный bar не инициализируется повторно, а сохраняет свое значение из предыдущего вызова. Таким образом от вызова к вызову мы накапливаем в локальной переменной bar единицы.

    Переменная bar в функции будет использована локальная (из строки (def foo(bar=[]):), а не глобальная из строки bar = []. К слову, если запустить код без инициализации глобальной bar:
    In [1]: def foo(bar=[]):
       ...:        bar.append(1)
       ...:        return bar
       ...: 
    
    In [2]: print(foo())
    [1]
    
    In [3]: print(foo())
    [1, 1]
    
    In [4]: print(foo())
    [1, 1, 1]

    результат будет точно такой же, как и у ТС.


    если в функцию не передавать агрумент, то она будет использовать глобальную переменную bar

    А это просто новое слово в Python. Если не передавать в функцию аргумент, у которого определено значение по-умолчанию, то и будет использовано значение по-умолчанию. Пример:
    In [1]: bar = [1,2,3]
    
    In [2]: def foo(bar=[]):
           bar.append(1)
           return bar
       ...: 
    
    In [3]: foo()
    Out[3]: [1]
    
    In [4]: foo()
    Out[4]: [1, 1]
    
    In [5]: foo()
    Out[5]: [1, 1, 1]
    
    In [6]: foo()
    Out[6]: [1, 1, 1, 1]

    При первом вызове не наблюдается [1,2,3,1].
    Ответ написан
    Комментировать
  • Какие вопросы задают на собеседовании на позицию стажера в Яндекс?

    @thenno
    Проектирую, разрабатываю, преподаю.
    Яндекс - компания большая, и все зависит от того, в какую группу разработки попадете. Но скорее всего будет все так же стандартно, как и на собеседованиях на другие языки: узнают, насколько хорошо кандидат знает язык, насколько умеет думать алгоритмически, насколько помнит стандартные алгоритмы и структуры данных (особенно их реализации в языке, на котором он хочет писать), плюс какие-нибудь вопросы из предметной области, с которой предстоит работать (многопоточность, сеть, протокол http и т.д).
    Ответ написан
    Комментировать
  • Как связать Emacs, pylint и pep8?

    @thenno Автор вопроса
    Проектирую, разрабатываю, преподаю.
    Смог завести через flycheck (модная замена flymake). Из коробки работает нормально (использует flake8 для python), но мне хотелось старого доброго pylint. Вся настройка выглядела примерно так:
    (defun init-flycheck ()
      (flycheck-mode t)
      (setq flycheck-pylintrc "~/.emacs.d/config/pylintrc")
      (flycheck-select-checker 'python-pylint)
      )
    Ответ написан
    Комментировать