Noticing the version of web2py keeps interestingly increasing to 2.0, I think this is something Massimo might want to spend sometime thinking about.
As I understand it, because of "exec", controllers are called *after* the request arrives. This allows web2py to do a few interesting things that other frameworks can't. On the other hands, this is an example that shows an advantage of being able to manipulate controllers (concisely) *before* the request arrives. I found myself constantly type checking controller arguments (e.g. making sure an "id" is a number). This is another example where being able to specify a certain syntax to the URL is very helpful.