In article <cfdfce2a-a7cd-4174-a3a5-da021e80a...@x21g2000vbn.googlegroups.com>, snorble <snor...@hotmail.com> wrote:
> I use Python a lot, but not well. I usually start by writing a small > script, no classes or modules. One anti-pattern that I see in my own code is starting out thinking, "this is just a little script, I doesn't need any real structure". That almost always turns out to be wrong, but by the time I start to realize I'm writing spaghetti code, it's so temping to say, "I don't have the time to refactor this now, I'll just hack on it a bit more". Which, of course, makes it even harder to unravel later. The first step is to break up a monolithic script into a few functions. I encourage myself to do that from the git-go by keeping a template around: #!/usr/bin/env python def main(): pass if __name__ == '__main__': main() and I use that whenever I start a new script. That at least gets me off on the right foot. The next step is to turn my collection of functions (with the inevitable collection of global variables that lets them communicate) into a class with methods and instance variables. I can't tell you how many times I've started out saying, "this isn't going to be complicated enough to justify making it a class". Inevitably, I'm wrong. Finally, the next layer of stupid mistake I often make is to start out saying, "This isn't going to be complicated enough to justify writing unit tests". Inevitably, I'm wrong about that too. So far, none of the above is at all specific to Python, It's equally true in any language. Now, for some Python-specific advice; you can write Fortran in any language. What that means is it's one thing to translate some existing script into Python and make it work, but it's another to actually take advantage of some of Python's biggest strengths. Learn to be comfortable with list comprehensions, generator expressions, and iterators in general. Learn about Python's advanced data structures such as sets, defaultdicts, and named tuples. -- http://mail.python.org/mailman/listinfo/python-list