У меня есть код JavaScript, который определяет функцию getElementsByAttribute
следующим образом:
Object.prototype.getElementsByAttribute = function(attr) {
var children = this.all || this.getElementsByTagName('*'),
ret = [], i, c;
for( i=0; i
Это работает во всех браузерах, в которых я тестировал, кроме Internet Explorer 7 (и предположительно более ранней версии) - эти браузеры бросают "Объект не делает"
Единственное, что мне не нравится, это то, что объекты уже были созданы, когда я определил функцию прототипа ...
Мой ...
[Python 3.1]
Я следую за концепцией дизайна, согласно которой кортежи должны иметь известную длину (см. этот комментарий ), а кортежи неизвестной длины в большинстве случаев следует заменять списками. . У меня вопрос: при каких обстоятельствах мне следует отклониться от этого правила?
Например, я понимаю, что кортежи быстрее создаются из строковых и числовых литералов, чем списки (см. другой комментарий ). Итак, если у меня есть критически важный для производительности код, в котором выполняются многочисленные вычисления, такие как sumproduct (tuple1, tuple2)
, следует ли мне переопределить их для работы со списками, несмотря на снижение производительности? ( Суммарное произведение ((x, y, z), (a, b, c))
определяется как x * a + y * b + z * c
, и его аргументы имеют неопределенной, но равной длины).
А как насчет кортежа, который автоматически создается Python при использовании def f (* x)
? Я полагаю, это не то, что я должен заставлять перечислять каждый раз, когда использую его.
Между прочим, создать (x, y, z)
быстрее, чем [x, y, z]
(для переменных, а не для литералов)?