1
resposta

Não seria melhor utilizar um split() ao invés do find()?

Boa tarde,

Na hora de realizar o fatiamento da URL buscando pelo valor da variável não seria mais fácil utilizar o método split() ao invés de adicionar um segundo parâmetro no método find() para depois ter que realizar um if else?

Código mostrado na Aula:

indice_e_comercial = url_parametros.find('&', indice_valor)
if indice_e_comercial == -1:
    valor = url_parametros[indice_valor:]
else:
    valor = url_parametros[indice_valor:indice_e_comercial]

Versão com o split():

valor = url_parametros[indice_valor:].split('&')[0]

A idéia com o split() é quebrar a a string moedaOrigem=real&quantidade=100&moedaDestino=dolar contida na variável url_parametros a cada vez que for encontrado o caractere &.

Fazendo dessa maneira e imaginando que a nossa variável parametro_busca possui o valor moedaOrigem ele irá nos retornar a seguinte lista:

['real', 'quantidade=100', 'moedaDestino=dolar']

Onde iremos pegar somente o primeiro valor da lista, sendo determinado por [0] ao final do split(), que é o valor que queremos. E essa forma de verificação funciona independentemente se a URL possui 1 ou mais parâmetros.

Além dessa minha dúvida, a nível de velocidade de execução, qual dos dois métodos seria mais eficiente?

1 resposta

O find com if garante que seu código não vai quebrar caso a URL não tenha o caractere "&" (url sem parametros)

sobre velocidade de execução, é praticamente irrelevante usar um método ou outro. Se preocupe primeiro em fazer o código rodar, depois em fazer ele rodar corretamente... só ai, você começa a se preocupar em fazer ele rodar rapidamente.