Come già accennato, PEP8 non menziona esplicitamente l'operatore porzione in quel formato, ma spam[3:5]
è decisamente più comune e IMHO più leggibile.
Se pep8 checker è tutto da seguire, lo spazio prima :
verrà contrassegnato fino
[[email protected]]$ pep8 <(echo "spam[3:44]") # no warnings
[[email protected]]$ pep8 <(echo "spam[3 : 44]")
/dev/fd/63:1:7: E203 whitespace before ':'
... ma questo è solo a causa di esso presuppone :
ad essere l'operatore per definire una dict letterale e nessuno spazio è previsto prima dell'operatore. spam[3: 44]
passa per quella ragione, ma questo non sembra giusto.
A tal proposito, vorrei attenermi a spam[3:44]
.
Le operazioni aritmetiche annidate sono un po 'più complicate. Dei tuoi 3 esempi, solo il 2 ° si passa la convalida 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 ':'
Tuttavia, ritengo che tutto quanto sopra difficili da analizzare con occhio al primo sguardo.
Per facilitare la lettura e l'osservanza PEP8, io personalmente andare per:
spam[(ham(66) // 3):(44 + eggs())]
o per ulteriori operazioni di complicazione:
s_from = ham(66) // 3
s_to = 44 + eggs()
spam[s_from:s_to]
fonte
2011-11-11 10:43:25