Tuple passed to function recognised as string
R. David Murray
rdmurray at bitdance.com
Wed Mar 18 20:12:02 EDT 2009
Mike314 <michaelst at gmail.com> 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 in Python the syntactic element that defines something
as a tuple is the comma, not the parenthesis:
>>> x = 1, 2
>>> type(x)
<type 'tuple'>
>>> y = (1,)
>>> type(y)
<type 'tuple'>
>>> z = 1,
>>> type(z)
<type 'tuple'>
In your function call the comma would normally be an argument
separator, so in that context you do need the parenthesis as well:
test_func(val=('val1',))
--
R. David Murray http://www.bitdance.com
More information about the Python-list
mailing list