I like the question, but I don't have any experience in Perl so I'm not sure how to best advise you.
I suggest you do a Google search for "Python idioms".  You will find some gems.  In particular:
http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html
http://docs.python.org/dev/howto/doanddont.html
http://jaynes.colorado.edu/PythonIdioms.html
As for the variable "declaration" issue, here's my best advice for you:
Remember that in Python, objects have a life of their own, separate from variable names.  A variable name is a tag that is bound to an object.  At any time, you may rebind the name to a different object, perhaps of a completely different type.  Thus, this is perfectly legal:
x = 1    # bind x to integer, value == 1
x = "1"  # bind x to string, value is "1"
Python is in fact strongly typed; try executing the code 1 + "1" and see how well it works, if you don't believe me.  The integer object with value 1 does not accept addition of a string value, in the absence of explicit type coercion.  So Python names never ever have sigil characters that flag properties of the variable; that's just not how Python does things.  Any legal identifier name could be bound to any Python object of any type.