Tuple passed to function recognised as string

Terry Reedy tjreedy at udel.edu
Thu Mar 19 01:09:43 CET 2009

Mike314 wrote:
> Hello,
>    I have following code:
> def test_func(val):
>     print type(val)
> test_func(val=('val1'))
> test_func(val=('val1', 'val2'))
> The output is quite different:
> <type 'str'>
> <type 'tuple'>
> Why I have string in the first case?

Because (<any expression>) == <any expression>.
Perhaps you meant ('val1',).

"Parenthesized forms
A parenthesized form is an optional expression list enclosed in parentheses:

parenth_form ::=  "(" [expression_list] ")"

A parenthesized expression list yields whatever that expression list 
yields: if the list contains at least one comma, it yields a tuple; 
otherwise, it yields the single expression that makes up the expression 

An empty pair of parentheses yields an empty tuple object.

More information about the Python-list mailing list