Лучший подход определенно хорош.Я продолжал думать, что ваш второй (более низкий) пример был вашим самым новым и был полностью сбит с толку.
Я даже не могу представить себе другой метод, если мы не начнем делать то, что нам не следует делать, например, установить _mutable
атрибут False
вместо copy()
.
Примечание: это для дерьма и хихиканья, на самом деле не делайте этого
2110003 вызовов функций в 2.117 CPUсекунд
def test3(n):
for i in range(n):
q = QueryDict('a=2&b=4&c=test') # we could pass the mutable argument here
# but normally we wouldn't be constructing the querydict ourselves
q._mutable = True
del q['b']
q.urlencode()
3010003 вызовов функций за 3.065 CPU секунд
def test1(n):
for i in range(n):
q = QueryDict('a=2&b=4&c=test')
z = q.copy()
del z['b']
z.urlencode()
2860003 вызовов функций за 3.388 секунд CPU
def test2(n):
for i in range(n):
q = QueryDict('a=2&b=4&c=test')
z = QueryDict('').copy()
z.update(dict([x for x in q.items() if x[0] != 'b']))
z.urlencode()