One of the features that makes CherryPy (and TurboGears by association) so much fun to use is that parameters coming in from a web request are automatically turned into parameters for your method. This makes handling web requests about as natural as possible.
Consider a root that looks like this:
You probably won't be surprised to learn that access "/" will return "I am Arthur, King of the Britons". Default arguments work exactly as you'd expect them to. In fact, now that you're ready for it, I'm guessing that request parameters will work exactly as you expect them to. A request to "/?name=Lancelot" would return "I am Lancelot, King of the Britons".
Just as in Python itself, calling "/?foobar=baz" will raise an exception because it will try to call root.index(foobar="baz"). On the web, though, getting a "500" server exception error is ugly for mistyped URLs or extra parameters. For that reason, there is a configuration option, tg.strict_parameters, that is on by default in development and off in production.
If you want to be able to handle any parameter that comes in from the web, you can always just do what you'd do in Python:
Just as in standard Python, kw would be a dictionary holding the rest of the request arguments.