import dir1.dir2.mod
from dir1.dir2.mod import x
Автор: Няшный Человек
Дата публикации: 2015-12-15T22:28:00.000+02:00
Автор: Няшный Человек
Дата публикации: 2015-12-15T22:28:00.000+02:00
Это 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
Курс ориентирован на людей, уже знакомых с каким-либо языком программирования, например, Java или C++.
Лектор: Сергей Лебедев.
Рекомендации к оцениванию домашних заданий. Оценивать по двум критериям: корректность и идиоматичность, то есть решение должно правильно работать и соответствовать руководству по стилю.
Лекция 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.
Motor 0.5 (асинхронный драйвер для MongoDB) доехал до релиза.
Новая версия работает с asyncio.
Всем рекомендую
Автор: Andrew Svetlov
message = “First version”
def printer():
print(message)
Этот модуль создает и экспортирует два имени – одно связано со строкой, а другое является функцией. Теперь запустите интерпретатор Python, импортируйте модуль и вызовите функцию, которую он экспортирует. Функция выведет
значение глобальной переменной message:
% python
>>> import changer
>>> changer.printer()
First version
Не закрывая интерактивную оболочку интерпретатора, отредактируйте файл модуля в другом окне:
…измените файл changer.py, не останавливая интерактивный сеанс…
% vi changer.py
Измените глобальную переменную message, а также тело функции printer:
message = “After editing”
def printer():
print(‘reloaded:’, message)
Затем вернитесь в окно интерактивной оболочки и перезагрузите модуль, что-
бы выполнить обновленный программный код. Обратите внимание: в следую-
щем листинге видно, что операция импортирования модуля не дает желаемого
результата – на экран выводится первоначальный текст сообщения, несмотря
на то, что файл был изменен. Чтобы задействовать новую версию, необходимо
вызвать функцию reload:
…вернитесь обратно в интерактивную оболочку…
>>> import changer
>>> changer.printer() # Никакого эффекта: используется прежняя версия модуля
First version
>>> from imp import reload
>>> reload(changer) # Принудительная загрузка/выполнение нового кода
>>> changer.printer() # Теперь будет запущена новая версия
reloaded: After editing
Обратите внимание, что функция reload в действительности возвращает объект – обычно ее результат игнорируется, но поскольку интерактивная оболочка автоматически выводит результат выражения, интерпретатор вывел результат в виде строки
Автор: Няшный Человек
Дата публикации: 2015-11-29T12:13:00.001+02:00
Кроме того, синтаксис инструкции import и функции reload отличается: аргумент должен передаваться функции reload в круглых скобках, а инструкции import – без них. Повторная загрузка модуля выполняется примерно следующим образом:
import module # Первоначальное импортирование
…используются атрибуты модуля…
… # Теперь выполняются изменения в файле модуля
…
from imp import reload # Импортировать функцию reload (в 3.0)
reload(module) # Загрузить обновленный модуль
…используются атрибуты модуля…
Это типичный случай, когда вы импортируете модуль, затем изменяете исходный программный код в текстовом редакторе, а потом повторно загружаете его. Когда вы вызываете функцию reload, интерпретатор повторно читает файл с исходными текстами и выполняет инструкции, находящиеся на верхнем уровне. Пожалуй, самое важное, что следует знать о функции reload, – это то, что она изменяет непосредственно сам объект модуля – она не удаляет и не создает его повторно. Вследствие этого все ссылки на объект модуля, имеющиеся в программе, автоматически будут учитывать изменения, произошедшие в результате повторной загрузки. А теперь подробнее о том, как происходит повторная загрузка:
• Функция reload запускает новый программный код в файле модуля в текущем пространстве имен модуля. При повторном выполнении программный код перезаписывает существующее пространство имен вместо того, чтобы удалять его и создавать вновь.
• Инструкции присваивания на верхнем уровне файла замещают имена новыми значениями. Например, повторный запуск инструкции def приводит к замещению предыдущей версии функции в пространстве имен модуля, выполняя повторную операцию присваивания имени функции.
• Повторная загрузка оказывает воздействие на всех клиентов, использовавших инструкцию import для получения доступа к модулю. Клиенты, использовавшие инструкцию import, получают доступ к атрибутам модуля, указывая полные их имена, поэтому после повторной загрузки они будут получать новые значения атрибутов.
• Повторная загрузка будет воздействовать лишь на тех клиентов, которые еще только будут использовать инструкцию from в будущем. Клиенты, которые использовали инструкцию from для получения доступа к атрибутам в прошлом, не заметят изменений, произошедших в результате повторной загрузки, – они по-прежнему будут ссылаться на старые объекты, полученные до выполнения перезагрузки.
Автор: Няшный Человек
Дата публикации: 2015-11-21T16:54:00.000+02:00