Основы операции импортирования пакетов

До сих пор, импортируя модули, мы загружали файлы. Это типичный способ использования модулей и, скорее всего, этот прием будет вами использоваться наиболее часто в начале вашей карьеры программиста на языке Python. Однако возможности импортирования модулей немного богаче, чем я предлагал вам считать до настоящего момента. 
Помимо возможности импортировать имя модуля существует возможность импортировать имена каталогов. Каталог на языке Python называется пакетом, поэтому такая операция импортирования называется импортированием пакетов. В действительности, операция импортирования пакета превращает имя каталога в еще одну разновидность пространства имен, в котором атрибутам соответствуют подкаталоги и файлы модулей, находящиеся в этих каталогах.

Так как же выполняется импортирование пакетов? В инструкциях import, там, где вы указывали имя простого файла, можно указать список имен в пути к каталогу, разделяя их символами точки:
import dir1.dir2.mod
То же самое относится и к инструкции from:
from dir1.dir2.mod import x
Предполагается, что такой «точечный» путь в этих инструкциях соответствует пути через иерархию каталогов на вашей машине, ведущему к файлу mod.py (или к файлу с похожим именем – расширение в имени файла может быть другим). Таким образом, предыдущие инструкции указывают, что на вашей машине имеется каталог dir1, в котором существует подкаталог dir2, в котором находится файл модуля mod.py (или с похожим именем).
Кроме того, эти инструкции предполагают, что каталог dir1 находится внутри некоторого контейнерного  каталога  dir0,  который  находится  в  пути  поиска модулей. Другими словами, обе инструкции импорта предполагают наличие структуры  каталогов,  которая  выглядит  примерно  так,  как  показано  ниже (здесь в качестве разделителей имен каталогов используется символ обратного слеша, принятый в операционной системе DOS): dir0dir1dir2mod.py  # Или mod.pyc, mod.so и так далее
Контейнерный каталог dir0 должен быть добавлен в путь поиска модулей (если это не домашний каталог главного файла программы), как если бы имя dir1 было именем модуля. Инструкция import в вашем сценарии определяет пути, ведущие непосредственно к модулям, начиная от этого каталога.
В  любом  случае  самый  левый  компонент  пути  в  операции  импортирования пакета вычисляется относительно некоторого каталога, включенного в путь поиска модулей, – в список sys.path
То есть инструкции import в вашем сценарии должны содержать полный путь 
к импортируемым модулям относительно этого каталога.

Автор: Няшный Человек
Дата публикации: 2015-12-15T22:28:00.000+02:00

Предновогодние распродажи: несколько советов по безопасному онлайн-шопингу

Все больше россиян совершают покупки в интернет-магазинах: с января по октябрь 2015 года объём продаж Яндекс.Маркета вырос на 23% по сравнению с тем же периодом в 2014 году, а число онлайн-покупателей, заказывавших товары из Китая, увеличилось на 30%. Киберпреступники тоже не сидят сложа руки: по даннымThreatMetrix, в третьем квартале 2015 года количество атак в секторе электронной коммерции выросло на 25%. Компания HeadLight Security подготовила небольшой список рекомендаций по защите своих действий в процессе интернет-шопинга.
 
 
Злоумышленники нередко пользуются предпраздничным ажиотажем для похищения информации о пользователях, которая в дальнейшем может быть использована в различных фишинговых схемах. Спешат не только покупатели, но и магазины, открывая новые страницы и сервисы. Уже в 2013 году на ритейлеров приходилось 49% утечек данных банковских карт (по сведениямInfowath), и вряд ли к 2016 году эта цифра уменьшилась. Наиболее известные примеры последнего времени – инциденты с компаниями Target и Talk Talk. Нередко онлайн-ритейлеры допускают достаточно грубые ошибки, как в случае с утечкой данных покупателей JD.comв октябре 2015 года, когда зайти в личные кабинеты нескольких тысяч пользователей можно было путем подстановки номеров заказа.
 
Следует напомнить и о массовом переносе персональных данных пользователей глобальных интернет-ритейлеров на российские сервера – пока неясно, как повлияет эта миграция, осуществляемая в условиях цейтнота, на фактическую защищённость данных. 
 
 
Соблюдайте осторожность при работе с WiFi
 
Мы уже не раз писали о том, что публичный Wi-Fi – не лучший вариант для онлайн-шоппинга. Злоумышленник может легко перехватить ваши пароли, логины и номера платежных карт. Но в отпуске или командировке зачастую других вариантов просто нет. В этом случае перед поездкой примите следующие профилактические меры:

 

  • используйте VPN-сервис (ZenMate, Hideninja VPN, SurfEasy, HotspotShield и т.д.)
  • установите бесплатную программу для браузера SSL Everywhere
  • проверьте систему антивирусом и включите брандмауэр
  • инсталлируйте все обновления на операционную систему и отдельные приложения

Покупайте авиабилеты на проверенных сайтах
 
Авиабилеты – один из наиболее популярных товаров в Интернете, в статистикеВТБ за 2015 год эта категория занимает первое место с большим отрывом. Лучше всего приобретать авиабилет на сайте авиакомпании. Если же какая-то площадка предлагает значительно более дешевые варианты, проверьте, сотрудничает ли она с крупными поисковыми агрегаторами, например Skyscanner или Aviasales. Не стоит заказывать билеты в соцсетях, в них часто обитают мошенники. Один из подобных случаев произошел в 2010 году – авиабилеты с 40% скидкой бронировались по чужим картам. Затем клиент проверял свои данные на сайте авиакомпании и переводил деньги преступникам. Чуть позже настоящие владельцы пластиковых карт обращались в банк с заявлением о несанкционированном списании денежных средств со счета и бронирование билета аннулировалось.
 

Отслеживайте посылки на безопасных сайтах
 
В прошлом году пользователи получалифишинговые SMS с текстом «посылка получена www.pochtaruss.net». Кампания была рассчитана на владельцев устройств на базе Android. Всех остальных сайт перенаправлял на сайт «Почты России». При переходе с Android злоумышленники предлагали обновить якобы устаревший браузер, изменив настройки безопасности, после чего на устройство устанавливался  зловред, перехватывающий банковские SMS. Расчет мошенников на обширный улов был вполне обоснован: на один только AliExpress за год зашли 22 млн пользователей, судя по даннымTNS, а аудиторияАндроид в России – это 82,5% смартфонов и 72,3% планшетов. Стоит отметить, что «Почта России» рассылает SMS-уведомления о поступлении международных посылок в режиме дополнительной услуги и не предлагает посещать какие-либо сайты.
 

Не слишком доверяйте продавцам на AliExpress
 
На сайте AliExpress продают свои товары тысячи продавцов. Во избежание мошенничества площадка не передает деньги продавцу, пока покупатель не подтвердит получение товара. Однако неплохой механизм защиты имеет ряд изъянов. К примеру, покупатель заказал смартфон в магазине с хорошим рейтингом, но долгое время не может отследить свою посылку по выданному продавцом трек-номеру и начинает интересоваться у продавца, отправил ли тот посылку. Продавец клянется, что посылка уже в пути, просто почта сильно загружена, но он готов компенсировать доставленные неудобства суммой в $10-15. 
 
Покупателю надо лишь открыть диспут (спор) на частичную компенсацию стоимости товара. Продавец вернет эту небольшую сумму, однако закрытый по частичному возврату денег диспут повторно открыть будет невозможно. Продавцы-мошенники пользуются этой схемой, покупая или взламывая магазины с хорошим рейтингом. Посылка в таких случаях не отправляется, а номер отслеживания дается «фейковый».
 
При заказах на AliExpress важно также иметь ввиду, что открытый диспут можно как «отменить», так и «принять», «отредактировать» или «обострить». В случае принятия новый диспут открыть будет невозможно, даже если у вас осталось время на защиту своего заказа, чем также активно пользуются недобросовестные продавцы. Если же вы собрались обострить спор, проверьте сумму запроса на возмещение, продавец имеет возможность снизить ее до нуля.
 

Проверяйте шифрование платежной системы
 
Перед совершением платежа всегда проверяйте, зашифровано ли соединение на странице оплаты. В электронных платежных системах должен использоваться протокол HTTPS. Большинство современных браузеров отображают информацию о безопасности веб-сайта в адресной строке в виде префикса «HTTPS». 


Контролируйте счета
 
Во многих банках есть  стандартные лимиты по сумме перевода денежных средств в течение суток, что при своевременном вмешательстве позволит избежать максимальных потерь. Эти суммы достаточно велики (для карт Сбербанка Visa Electron/Maestro — 50 000 рублей, для остальных — 150 000 рублей), поэтому перед отъездом лучше обратиться в банк и самостоятельно установить требуемый лимит. За границей лучше не отказываться от SMS-подтверждений транзакций и переставить сим-карту, на которую приходят оповещения, во второй слот своего смартфона (если запасной слот есть). Наиболее безопасной стратегией будет использовать для SMS-подтверждений простой телефон, который не может быть заражен вирусами, способными скрывать сообщения о транзакциях.  


Не используйте один и тот же пароль дважды 
 
Утечки логинов и паролей пользователей случаются у крупнейших компаний мира – Adobe, Ebay, PayPal. Поэтому один и тот же пароль на разных ресурсах делает вас крайне уязвимым. Кроме того, пароли должны быть сложные. Сгенерировать и сохранить их помогут менеджеры паролей – 1Password, KeePass Password Safe, Roboform. Если же вы не доверяете этим программам, попробуйте использовать в качестве паролей строки из любимых стихов, набирая их русскими буквами в английской раскладке.


Не доверяйте письмам со скидками
 
Самые заманчивые предложения и «секретные скидки» в электронной почте могут оказаться попыткой фишинга. Тот же дизайн, что и у вашего любимого магазина, тот же адрес (после маскировки с помощью спуфинга). Перед тем как оплачивать покупку, как минимум наберите знакомый вам адрес сайта в новом окне и поищите понравившееся предложение.

Автор:
Дата публикации:

MagicPython — Syntax Highlighter для SublimeText

Мой приятель Юра Селиванов попросил написать рекламный пост о его новом проекте MagicPython.

Это syntax highlighter для Sublime Text и Atom, который поддерживает все новые языковые конструкции Python 3.5 (async def и await например) плюс type annotations, string formatting и регулярные выражения.

Sublime поддерживает Python из коробки, но с Python 3 (а особенно с Python 3.5) у него проблемы. MagicPython понимает всё.
Разметка шаблонов для форматирования строк и регулярок заслуживает отдельного упоминания — выглядит прекрасно и заметно облегчает жизнь.

Я сам использую ортодоксальный Emacs и переходить (пока) не собираюсь, но MagicPython работает исключительно хорошо и заслуживает доброго слова.

К слову, Юра (https://twitter.com/1st1) Python Core Developer и автор PEP 492 aka async/await — т.е. очень грамотный спец, который знает как делать качественные продукты.

Пользуйтесь с удовольствием.

P.S.

О редакторе Atom узнал только на этой неделе.
На первый взгляд выглядит как Sublime но при этом Open Source.
Уважаемые читатели, кто-нибудь его использует? Какие ваши впечатления?

Автор: Andrew Svetlov

Щи из квашенной капустой Термомикс.

Ингредиенты:

  • 1 зубчик чеснока
  • пучок зелени
  • 150 г лука
  • 1 ст. л. муки
  • 30 г растительного масла
  • 2 ст. л. томатной пасты
  • 350 г квашеной капусты
  • 150 г грибов
  • 1, 3 литра кипятка
  • соль
  • перец
  • 2 лавровых листа Читать

Видеоуроки курса Python 2015

Курс ориентирован на людей, уже знакомых с каким-либо языком программирования, например, Java или C++.

Лектор: Сергей Лебедев.

Домашние задания

Рекомендации к оцениванию домашних заданий. Оценивать по двум критериям: корректность и идиоматичность, то есть решение должно правильно работать и соответствовать руководству по стилю.

Хорошие книги про Python

  1. David M. Beazley, Python Essential Reference, 2009.
  2. Mark Lutz, Learning Python, 5th edition, 2013 (значительная часть 4-го издания также будет релевантной).
  3. David M. Beazley, Brian K. Jones, Python Cookbook, 3rd edition, 2013.

Лекция 1. Начало.

Кто, когда и зачем придумал язык Python. Интерпретаторы языка. Синтаксис языка с высоты птичьего полёта. Интерактивная оболочка IPython.

Дополнительные материалы

Лекция 2. Всё, что вы хотели знать о функциях в Python.

Синтаксис объявления функций. Упаковка и распаковка аргументов. Ключевые аргументы и аргументы по умолчанию. Распаковка и оператор присваивания. Области видимости, правило LEGB, операторы global и nonlocal. Функциональное программирование, анонимные функции. Функции map, filter и zip. Генераторы списков, множеств и словарей. Немного о PEP 8.

Дополнительные материалы

Лекция 3. Декораторы и модуль functools.

Синтаксис декораторов. Декораторы с аргументами, без аргументов. Примеры использования декораторов. Модуль functools.

Дополнительные материалы

Лекция 4. Строки, байты, файлы и ввод/вывод.

Строковые литералы и сырые строки. Строки и Юникод. Основные методы работы со строками. Модуль string. Байты. Кодировки. Файлы и файловые объекты. Методы работы с файлами. Модуль io.

Дополнительные материалы

Лекция 5. Встроенные коллекции и модуль collections.

И снова встроенные коллекции: кортеж, список, множество, словарь — обход в глубину, обзор методов, примеры. Почти всё про модуль collections: именованные кортежи, счётчики, defaultdict, OrderedDict.

Дополнительные материалы

Лекция 6. Классы 1.

Синтаксис объявления классов. Атрибуты, связанные и несвязанные методы, __dict__, __slots__< /code>. Статические методы и методы класса. Свойства, декоратор @property. Наследование, перегрузка методов и функция super. Декораторы классов. Магические методы.

Дополнительные материалы

Лекция 7. Исключения и менеджеры контекста.

Исключения, зачем они нужны и как их обрабатывать. Встроенные исключения и базовые классы BaseException и Exception. Операторы try...except..else..finally. Менеджеры контекста и модуль contextlib.

Дополнительные материалы

Лекция 8. Итераторы, генераторы и модуль itertools.

Два протокола итераторов: __next__ + __iter__ и __getitem__. Итераторы и цикл for, а также операторы in и not in. Генераторы, оператор-выражение yield. Генераторы как: итераторы, сопрограммы, менеджеры контекста. Модуль itertools.

Дополнительные материалы

Лекция 9. Модули, пакеты и система импорта.

Модули. Операторы import и from ... import. Пакеты. Относительный и абсолютный импорт. __init__-фасад. И снова оператор import - обход в глубину.

Дополнительные материалы

Лекция 10. Классы 2.

Дескрипторы: что-как-зачем. Конструктор __new__, класс type и метаклассы. Наследование встроенных типов. Модули abc и collections.abc.

Дополнительные материалы

Лекция 11. Тестирование.

Зачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest. Пакет py.test - на порядок лучше. Тестирование свойств и пакет hypothesis.

Дополнительные материалы

Лекция 12. Быстрее, Python, ещё быстрее.

Измерение времени работы кода на Python с помощью модулей timeit, cProfile и line_profiler. Немного о NumPy. JIT и AOT компиляция кода на Python на примере Numba и Cython.

Дополнительные матер