[python-nl] fast & simple ?

eric casteleijn thisfred at gmail.com
Wed Mar 4 23:59:58 CET 2009


Floris van Manen wrote:
> L.S. !
> 
> Just in case someone is in the mood to find a faster & simpler way to 
> this piece of code ...
> Thanks !
> .Floris

Geen idee wat je code moet doen, en dus hoe die te verbeteren. Een 
algemene tip. Dit:

> def FindSegment(r, A=[], FACT=0, DATA=1 ):

Is een erg slecht idee: Gebruik geen keyword arguments met mutable types 
(lists en dictionaries) als default values. Die worden geinstantieerd op 
het moment dat de functie voor het eerst geladen wordt, en alle 
eventuele wijzigingen zijn de default value voor de volgende aanroep. 
Een van die weinige dingen in python waar een hartgrondig WTF? op zijn 
plek is. Als je echt een lege lijst nodig hebt als er niets meegegeven 
wordt voor A, doe dan A=None, en check daarop aan het begin van je 
functie body, en stop er een verse lege lijst in. Maar dat wil je 
blijkbaar sowieso niet, want de volgende regel:

>     if r <= A[0][FACT]:

faalt met een lege lijst. Dus het is me een raadsel waarom er een 
default value is. ;)

Verder zijn variabelen met uppercase letters een gruwel.

-- 
- eric casteleijn
http://thisfred.blogspot.com


More information about the Python-nl mailing list