Atualização :
Gareth Rees estava certo ao dizer que os pontos 1 e 3 não eram válidos neste caso. Embora eu ache que os pontos 2 e 4 ainda sejam válidos, deixarei as teses aqui.
(Percebi que o request.POST
objeto de ambos Pyramid (Pylon) e Django é alguma forma de MultiDict
. Portanto, talvez seja uma prática mais comum do que tornar request.POST
imutável.)
Não posso falar pelos caras do Django, embora me pareça que poderia por alguns destes motivos:
Performance . objetos imutáveis são "mais rápidos" do que os mutáveis, pois permitem otimizações substanciais. Um objeto é imutável significa que podemos alocar espaço para ele no momento da criação e os requisitos de espaço não estão mudando. Ele também tem coisas como eficiência de cópia e eficiência de comparação por causa disso.
Edit : este não é o caso deQueryDict
como Gareth Rees apontou.
- No caso de
request.POST
, parece que nenhuma atividade no lado do servidor deve precisar alterar os dados da solicitação . E, portanto, os objetos imutáveis são mais adequados, sem mencionar que têm uma vantagem substancial de desempenho.
Objetos imutáveis podem ser usados como dict
chaves, o que eu suponho que podem ser muito úteis em algum lugar do Django ..
Edit : meu erro, imutável não implica diretamente em hash ; objetos hashable , entretanto, são tipicamente imutáveis também.
- Ao passar
request.POST
(especialmente para plug-ins de terceiros e outros), você pode esperar que esse objeto de solicitação do usuário permaneça inalterado.
De alguma forma, essas razões também são respostas genéricas para "imutável versus mutável?" questão. Estou certo de que há muito mais considerações de design do que acima no caso do Django.
request.POST
foi enviado com mais dados do que realmente foi.