Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lecture#4

.pdf
Скачиваний:
5
Добавлен:
23.02.2015
Размер:
125.21 Кб
Скачать

Metaprogramming templating: jinja2

Template variables

{{var}}, {{var.someattr}}, {{var[‘key’]}}

for block

{% for item in iterable %}

...

{% endfor %}

if block

{% if var%}

...

{% endif %}

Metaprogramming templating: jinja2

from jinja2 import Template

tpl = Template(“{{foo}} - {{bar}}”)

rtpl = tpl.render(foo=’First’,bar=’Second’) or

rtpl = tpl.render({‘foo’:’First’,‘bar’:’Second’})

Ok, now we can generate code at runtime. Usually, for C/CUDA code.

Metaprogramming warning

Never, ever-

trust other people’s data when using it to generate executable code.

Always assume the worst. They all want to crash your code. Always.

(google it, yeah. something like “python eval dangerous”)

Python

“With great power comes great responsibility.”

- Uncle Ben from SpiderMan

or, for those who prefer classic:

Un grand pouvoir implique de grandes responsabilités.

- François-Marie Arouet aka Voltaire

Questions?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]