#prog #python #article #abnormalprogramming
Python's Preprocessor
Python позволяет иметь в первой строке комментарий, который говорит о том, какая кодировка используется для текста файла. Имя кодировщика ищется в специальном месте, и механизм для предоставления этого кодировщика позволяет исполнять произвольный код на Python. Как следствие, это позволяет интерпретировать дальнейший текст как угодно — с синтаксисом, произвольно далёким от Python.
(thanks @itpgchannel)
Python's Preprocessor
Python позволяет иметь в первой строке комментарий, который говорит о том, какая кодировка используется для текста файла. Имя кодировщика ищется в специальном месте, и механизм для предоставления этого кодировщика позволяет исполнять произвольный код на Python. Как следствие, это позволяет интерпретировать дальнейший текст как угодно — с синтаксисом, произвольно далёким от Python.
(thanks @itpgchannel)
Pydong
Python’s Preprocessor
Every now and then you hear outrageous claims such as “Python has no preprocessor”.
🔥10
#prog #python #article
Проблемы вызова Python кода из C кода
Или про то, как немного странный (но легальный) код на Python может привести к сегфолту интепретатора.
Проблемы вызова Python кода из C кода
Или про то, как немного странный (но легальный) код на Python может привести к сегфолту интепретатора.
Хабр
Проблемы вызова Python кода из C кода
Привет, Хабр! Меня зовут Никита Соболев, я опенсорс разработчик и core-разработчик CPython. Давайте поговорим про одну из самых сложных частей интерпретатора CPython – вызов Python кода из C кода....
👍2
Блог*
#prog #article Fast Enough VMs in Fast Enough Time Старая (2012 года) статья про применение RPython (языка реализации PyPy) к реализации VM для ЯП с семантикой слишком необычной, чтобы для него подходили существующие VM. Чем привлекает RPython? Обещанием:…
#prog #python #article
И ещё серия старых (2012 год) статей от разработчика PyPy о том, как можно написать код таким образом, чтобы получить наибольшее преимущество от трассирующего JIT:
Controlling the Tracing of an Interpreter With Hints, Part 1: Controlling the Extent of Tracing
Controlling the Tracing of an Interpreter With Hints, Part 2: Controlling Optimization
Controlling the Tracing of an Interpreter With Hints, Part 3: Putting it All Together — про то, как организовать структуру представления объектов так, чтобы получить выгоду от JIT (ибо наивный подход со словарями методов толком не ускорить)
И ещё серия старых (2012 год) статей от разработчика PyPy о том, как можно написать код таким образом, чтобы получить наибольшее преимущество от трассирующего JIT:
Controlling the Tracing of an Interpreter With Hints, Part 1: Controlling the Extent of Tracing
Controlling the Tracing of an Interpreter With Hints, Part 2: Controlling Optimization
Controlling the Tracing of an Interpreter With Hints, Part 3: Putting it All Together — про то, как организовать структуру представления объектов так, чтобы получить выгоду от JIT (ибо наивный подход со словарями методов толком не ускорить)
Blogspot
Controlling the Tracing of an Interpreter With Hints, Part 1: Controlling the Extent of Tracing
The question I was asked most often during my recent US trip was how exactly the hints work that interpreter authors can use to improve the...
🔥3👍2
#prog #cpp #python
Что общего у C++ и Python?
Правильно: что в C++, что в Python нельзя распаковывать кортежи в аргументах лямбды.
Что общего у C++ и Python?
Правильно: что в C++, что в Python нельзя распаковывать кортежи в аргументах лямбды.
Stack Overflow
Structured binding in lambda arguments
Why I cannot use C++17 structured binding in this case?
std::map<int, int> m;
std::find_if( m.cbegin(), m.cend(), []( const auto & [x, y] ){ return x == y; } );
std::map<int, int> m;
std::find_if( m.cbegin(), m.cend(), []( const auto & [x, y] ){ return x == y; } );
🌚11👌4
Блог*
#prog #cpp #python Что общего у C++ и Python? Правильно: что в C++, что в Python нельзя распаковывать кортежи в аргументах лямбды.
#prog #python
Причём в Python 2.x можно было писать код вида
, а в Python 3 это убрали после PEP 3113, причём по причинам, которые, на мой взгляд, можно было бы и исправить.
Причём в Python 2.x можно было писать код вида
lambda (x, y): (y, x)
, а в Python 3 это убрали после PEP 3113, причём по причинам, которые, на мой взгляд, можно было бы и исправить.
Python Enhancement Proposals (PEPs)
PEP 3113 – Removal of Tuple Parameter Unpacking | peps.python.org
Tuple parameter unpacking is the use of a tuple as a parameter in a function signature so as to have a sequence argument automatically unpacked. An example is:
🤡8🤮2😢1🤣1
#prog #python #article
Новый лучший способ форматирования строк в Python
t-строки — новый вид строк в Python. Походит на format_args! в Rust в том смысле, что позволяет захватывать переменные по имени и создаёт просто шаблон со значениями переменных вместо уже форматированной строки. Как следствие, это позволяет одновременно ускорить форматирование и отделить собственно образование шаблона от его интерпретации. В статье приводится пример форматировщика SQL-запросов: он может при форматировании автоматически экранировать значения. Аналогично для шаблонизатора HTML.
Новый лучший способ форматирования строк в Python
t-строки — новый вид строк в Python. Походит на format_args! в Rust в том смысле, что позволяет захватывать переменные по имени и создаёт просто шаблон со значениями переменных вместо уже форматированной строки. Как следствие, это позволяет одновременно ускорить форматирование и отделить собственно образование шаблона от его интерпретации. В статье приводится пример форматировщика SQL-запросов: он может при форматировании автоматически экранировать значения. Аналогично для шаблонизатора HTML.
🤮13👍7🤔2❤1
Технологический Болт Генона
Достижение выполнения кода при контроле над текстом комментария в Python-скрипте https://www.opennet.ru/opennews/art.shtml?num=63669 Участники могли отправить сетевой запрос к Python-скрипту, который создавал новый Python-скрипт cо случайными именем, добавлял…
#prog #itsec #python
В конце мне не нравится, что автор поёт дифирамбы ИИ. Ну и ещё у него есть функция
Это явно можно написать одновременно эффективнее и проще для восприятия:
В конце мне не нравится, что автор поёт дифирамбы ИИ. Ну и ещё у него есть функция
ascii_safe
, которая написана просто ужасно:def ascii_safe(x: int) -> bool:
"""True if all four bytes have high bit clear."""
return all(((x >> (8 * i)) & 0x80) == 0 for i in range(4))
Это явно можно написать одновременно эффективнее и проще для восприятия:
def ascii_safe(x: int) -> bool
return x & 0x80808080 == 0
💯13🤡5