On Jun 20, 5:22 pm, Stephen R Laniel <[EMAIL PROTECTED]> wrote: > Perhaps it would help for me to explain what I'd like. > > Under both Perl and Python, I've found myself > having/wanting to write things like so: > > def my_func( int_arg, str_arg ): > try: > int_arg = int( int_arg ) > str_arg = str( str_arg ) > except ValueError: > sys.stderr.write( "Args are not of the right type\n" ) > sys.exit(1)
After several hundreds of such checks, good luck making the 2.0 version of your application Unicode-friendly. > Granted, in a dynamic language we won't always (maybe "won't > often") have a situation where the types are known this well > at compile time. But sometimes we will. And it would be nice > to catch these before the program even runs. Optional typing has its merits but your example is more of a counterexample, an example where the explicit try/catch doesn't really buy you anything. You'd get essentially the same effect if you just attempted the conversion and let any exception propagate: def my_func(some_non_hungarian_notation_meaningful_name, other_non_hungarian_notation_meaningful_name): a = int(some_non_hungarian_notation_meaningful_name) b = str(other_non_hungarian_notation_meaningful_name) More often than not the types that you *think* are required will turn out to be more (and sometimes less) restrictive than necessary. Still, If you're addicted to manifest typing [1], the typechecking module [2] may give you a warm and fuzzy feeling: from typecheck import accepts @accepts(int, str) my_func(some_non_hungarian_notation_meaningful_name, other_non_hungarian_notation_meaningful_name): HTH, George [1] http://c2.com/cgi/wiki?ManifestTyping [2] http://oakwinter.com/code/typecheck/tutorial/basics.html -- http://mail.python.org/mailman/listinfo/python-list