On Mon, Jul 8, 2013 at 12:23 PM, Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote: > On Mon, 08 Jul 2013 10:48:03 +1000, Chris Angelico wrote: > [...] >> That means that I, as programmer, have to keep track of the nesting >> level of subtransactions. Extremely ugly. A line of code can't be moved >> around without first checking which transaction object to work with. > > I feel your pain, but I wonder why we sometimes accept "a line of code > can't be moved around" as an issue to be solved by the language. After > all, in general most lines of code can't be moved around.
It's not something to be solved by the language, but it's often something to be solved by the program's design. Two lines of code that achieve the same goal should normally look the same. This is why Python's policy is "one obvious way to do something" rather than "spell it five different ways in the same file to make a nightmare for other people coming after you". Why should database queries be spelled "trans1.query()" in one place, and "trans2.query()" in another? Similarly, if I want to call another function and that function needs to use the database, why should I pass it trans3 and have that come out as trans1 on the other side? Unnecessarily confusing. Makes much more sense to use the same name everywhere. ChrisA -- http://mail.python.org/mailman/listinfo/python-list