Допустимо ли использовать хитрости для сохранения программиста при вводе данных в ваш код? - PullRequest
10 голосов
/ 14 июля 2009

Пример: действительно неудобно набирать список строк в python:

["January", "February", "March", "April", ...]

Я часто делаю что-то подобное, чтобы избавить меня от необходимости набирать кавычки повсюду:

"January February March April May June July August ...".split()

Это заняло столько же времени, и я набрал в 2 раза больше месяцев. Другой пример:

[('a', '9'), ('4', '3'), ('z', 'x')...]

вместо:

map(tuple, "a9 43 zx".split())

, что заняло гораздо меньше времени.

Ответы [ 13 ]

0 голосов
/ 14 июля 2009

Я думаю, что ставить такие утверждения, как

"январь февраль март апрель май июнь июль август ...". Split ()

на глобальном уровне модуля в порядке. Таким образом, он выполняется только один раз при импорте. Я даже иногда использую его в неэффективных критичных функциях из-за уменьшенного шума линии.

В отношении sidenote я думаю, что интерпретаторы Python могут быть выполнены для выполнения функции split () во время компиляции, которая устранит накладные расходы при вызове метода. Причина в том, что строка является встроенным литералом, а Python не позволяет добавлять / переопределять методы для самого базового типа строки, поэтому компилятор может знать, что "" .split () может ссылаться только на один конкретный метод.

0 голосов
/ 14 июля 2009

Я не думаю, что такие вещи должны быть в источнике.

На вашем месте я бы попросил Python оценить соответствующие вторые версии и затем вставить результаты в мой исходный код.

0 голосов
/ 14 июля 2009

Я бы счел это приемлемым, если немного ленивым, если то, что делается, не слишком критично для производительности. Вы всегда можете вернуться и оптимизировать его, если вам нужно больше скорости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...