Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]

2,264 views

Published on

Python AST: между исходным текстом и байт-кодом / Николай Карелин / Системный архитектор VPI Development Center

Николай познакомит слушателей с деталями устройства Python AST и, в частности, расскажет некоторые интересные факты о работе диалекта Hy.

Python Meetup - встречи минского сообщества любителей языка программирования Python.
Присоединяйся к нам!
Мы в twitter: https://twitter.com/pythonminsk
Мы на youtube: http://www.youtube.com/pythonMinsk
Мы на slideshare: http://www.slideshare.net/MinskPythonMeetup

Published in: Software
  • DOWNLOAD FULL eBOOK INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF eBook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB eBook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. doc eBook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. PDF eBook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB eBook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. doc eBook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, CookeBOOK Crime, eeBOOK Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]

  1. 1. PYTHON AST MODULE Между исходным текстом и байткодом Николай Карелин
  2. 2. Что это? • Abstract Syntax Tree: • Представление абстрактной структуры кода языка программирования в виде дерева объектов • В отличие от дерева разбора (parse tree) остаются только элементы синтаксиса языка
  3. 3. Компиляция кода • Python 2.5 и позже • By Armin Ronacher .py Parse Tree CFG* bytecode AST *CFG = Control Flow Graph
  4. 4. Пример 1
  5. 5. Module FunctionDef Name Expr Pass body arguments body Module( body=[ FunctionDef(name='func', args=arguments( args=[Name(id='x', ctx=Param())], vararg=None, kwarg=None, defaults=[]), body=[Expr(value=Str(s='My function')), Pass()], decorator_list=[])]) Str value Param ctx
  6. 6. Пример 2 https://github.com/titusjan/astviewer Attributes Fields
  7. 7. Структура модуля • from _ast import * • Часть С-кода • Определение всех объектов • Helper functions • Получение • Обработка • Манипуляции • Visitor/Transformer class prototypes
  8. 8. Иерархия объектов AST comprehension boolop cmpop arguments excepthandler alias expr_context exprmod operator keyword unaryopstmt slice 103 classes in total
  9. 9. Иерархия объектов • Attribute, BinOp, BoolOp, • Call, Compare, Dict, • DictComp, GeneratorExp, • IfExp, Lambda, List, • ListComp, Name, Num, • Repr, Set, SetComp, • Str, Subscript, Tuple, • UnaryOp, Yield • Assert, Assign, • AugAssign, Break, • ClassDef, Continue, Delete, • Exec, Expr, For, • FunctionDef, Global, • If, Import, ImportFrom, • Pass, Print, Raise, • Return, TryExcept, • TryFinally, While, With expr stmt
  10. 10. Синтаксис Python
  11. 11. Синтаксис Python ASDL (Zephyr Abstract Syntax Definition Language) format Использует Python скрипт для генерации C-кода ;) Опционально 0 или более
  12. 12. Примеры • blaze, cffi, enaml, Ipython • numpy (SafeEval), pandas, scipy.weave, sympy • pep8, pip, pycparser pylint pyflakes rope
  13. 13. Применение: компиляция • Numba, http://numba.pydata.org/ • HOPE, http://hope.phys.ethz.ch • PyJS (Pyjamas), http://pyjs.org, https://github.com/pyjs/pyjs .py Parse Tree CFG bytecode AST LLVM
  14. 14. Visitor GreenTreeSnakes
  15. 15. Свой язык в Python • Hy ;) .py Parse Tree CFG bytecode AST
  16. 16. Создание AST
  17. 17. Hy: HyASTCompiler.compile()
  18. 18. Сode instrumenting • Pyflakes, … • Macros (http://www.pocoo.org/projects/karnickel/) .py Parse Tree CFG bytecode AST ?
  19. 19. numpy.utils.safe_eval() … См. также ast.literal_eval()
  20. 20. Осторожно! There Might be Dragons!
  21. 21. AST - Предосторожности • Странные ошибки (segfaults) • Нет гарантии стабильности API • Разная структура для • 2.x <-> 3.x • Разные версии ветки 3.x • Cpython, PyPy, Jython, …
  22. 22. Что дальше • Hacker’s Guide to Python • PEP 339 / Python Dev. Guide • Green Tree Snakes documentation, https://greentreesnakes.readthedocs.org/en/latest/ • ast module documentation • http://pyvideo.org/video/419/pycon-2011--what-would-you- do-with-an-ast • http://www.dalkescientific.com/writings/diary/archive/2010/ 02/22/instrumenting_the_ast.html
  23. 23. Hacker’s Guide to Python Table of contents 1. Starting your project 2. Modules and libraries 3. Documentation 4. Distribution 5. Virtual environments 6. Unit testing 7. Methods and decorators 8. Functional programming 9. The AST 10. Performances and optimizations 11. Scaling and architecture 12. RDBMS and ORM 13. Python 3 support strategies 14. Write less, code more https://julien.danjou.info/books/the-hacker-guide-to-python
  24. 24. THE END
  25. 25. На будущее • Sphinx и ReST для документирования проектов • Python для численных расчетов (Numba, GPU, …) • ctypesgen – обертки над внешними библиотеками ???
  26. 26. Ищется помощь по белорусификации http://pymorphy2.readthedocs.org/en/latest/ https://github.com/kmike/pymorphy2

×