Home > Software design >  Python force tuple return type to required one use one line
Python force tuple return type to required one use one line

Time:11-17

I have a function

function(input: str) -> Tuple[str, str]:

    return tuple(x for x in input.split(",")) 

The input is always 'value1, value2', however, I got an error message of: "Tuple[str, ...]", expected "Tuple[str, str]")

Is there anyway force the return type to the expected one just use one line of code?

CodePudding user response:

The interpreter has no idea how many elements x for x in input.split(",") will produce - from its perspective, input could be anything. Accordingly, it classifies the returned type as Tuple[str, ...].

To get it to use a return type of Tuple[str, str], which you marked the method as, you need to explicitly return exactly two elements:

def function(input: str) -> Tuple[str, str]:
    tup = input.split(',')
    return (tup[0], tup[1])

or otherwise, annotate the method differently.


as a one-liner you could use a list slice:

def function(input: str) -> Tuple[str, str]:
    return tuple(input.split(','))[:2]
  • Related