Michel Claveau wrote:
Hi!

Not a question. Only a little note... (for readers without Sunday activity)


In (pure) Python, consider this code:
   def ftest():
       vret=(111,222,333)
       return(vret)

   print ftest()     #give:  (111, 222, 333)


In (COM) Python, the same method of the class of a dynamic-COM-server give other return:
   def ftest():
       vret=(111,222,333)
       return(vret)

   pv = win32com.client.Dispatch('.......
   print pv.ftest()     #give:  111



In (pure) Python, this code:
   def ftest():
       vret=(111,222,333)
       return(vret,)   #note the comma!

   print ftest()     #give:  ((111, 222, 333),)


In (COM) Python, the same method of the class of a dynamic-COM-server give other return:
   def ftest():
       vret=(111,222,333)
       return(vret,)  #note the comma!

   pv = win32com.client.Dispatch('.......
   print pv.ftest()     #give:  (111, 222, 333)


Another detail:
   def ftest():
       vret=[111,222,333]  #list in the place of tuple
       return(vret)

   pv = win32com.client.Dispatch('.......
   print pv.ftest()     #give:  (111, 222, 333)


And, to finish: in COM, return(vret) & return(vret,) give the same result.



I wish you marvellous Sunday, with sun, bathe and aperitif.

Misunderstanding about return values:

>    def ftest():
>        vret=(111,222,333)
>        return(vret)


This is the same as: return vret because the outer () are discarded as they are superfluous. You could write return ((((vret)))) and it would do the same thing. It still gets intrepreted as return tuple(111,222,333).

COM obviously treats things differently.

If you have a tuple and want to return it, just return it:  return vret

If you want to wrap objects in a tuple to return it, I would recommend using the build in tuple() command as the parenthesis can be confusing: return tuple(111,222,333).

The reason return (vret,) works is because it is the same as: return tuple(tuple(111,222,333) (the trailing comma is the key here and is what tells python you mean a tuple instead of the "normal" parenthesis meaning.

May seem inconsistent, but I don't believe it really is.

-Larry

_______________________________________________
python-win32 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to