Como ya se ha mencionado, PEP8 no menciona explícitamente el operador de parte en ese formato, pero spam[3:5]
es definitivamente más común y más fácil de leer en mi humilde opinión.
Si pep8 checker es cualquier cosa ir cerca, el espacio antes de :
se marcará hasta
[[email protected]]$ pep8 <(echo "spam[3:44]") # no warnings
[[email protected]]$ pep8 <(echo "spam[3 : 44]")
/dev/fd/63:1:7: E203 whitespace before ':'
... pero eso es sólo debido a que asume :
de ser el operador para la definición de un diccionario literal y no hay espacio se espera antes que el operador. spam[3: 44]
pasa por esa razón, pero eso simplemente no parece correcto.
En ese aspecto, me quedaría con spam[3:44]
.
Las operaciones aritméticas anidadas son un poco más complicadas. De sus ejemplos 3, sólo el segundo se pasa la validación PEP8:
[[email protected]]$ pep8 <(echo "spam[ham(66)//3:44+eggs()]")
/dev/fd/63:1:13: E225 missing whitespace around operator
[[email protected]]$ pep8 <(echo "spam[ham(66) // 3:44 + eggs()]") # OK
[[email protected]]$ pep8 <(echo "spam[ham(66) // 3 : 44 + eggs()]")
/dev/fd/63:1:18: E203 whitespace before ':'
Sin embargo, me parece todo lo anterior difíciles de analizar por el ojo a primera vista.
Para facilitar la lectura y el cumplimiento de PEP8, yo personalmente voy por:
spam[(ham(66) // 3):(44 + eggs())]
O para más operaciones de complicaciones:
s_from = ham(66) // 3
s_to = 44 + eggs()
spam[s_from:s_to]