is parameter an iterable?

Rick Wotnaz desparn at wtf.com
Wed Nov 16 09:06:01 EST 2005


Steven D'Aprano <steve at REMOVETHIScyber.com.au> wrote in
news:pan.2005.11.15.22.57.58.855137 at REMOVETHIScyber.com.au: 

> def foo(inputVal):
>     try:
>         for val in inputVal:
>             # do stuff
>     except TypeError, msg:
>         if msg == "iteration over non-sequence":
>             # handle non-iterable case
>         else:
>             # some other TypeError is a bug, so re-raise the
>             exception raise

Does this in fact work on your system? On mine (2.4.1 (#65, Mar 30 
2005, 09:13:57) [MSC v.1310 32 bit (Intel)]), it doesn't seem to. I 
tried 
    	if msg.find("iteration over non-sequence") >= 0:
... but I got a traceback, and 
AttributeError: TypeError instance has no attribute 'find'
... which leads me to belive that 'msg' is not type(str). It can be 
coerced (str(msg).find works as expected). But what exactly is msg? 
It appears to be of <type 'instance'>, and does not test equal to a 
string. This is not the least surprise to me.

-- 
rzed



More information about the Python-list mailing list