nikaro@jlai.lutoPython@programming.dev•[Answered] Typehints for functions that have variable signatures
4·
1 year agoNice! It looks like the best solution out there.
Nice! It looks like the best solution out there.
Python >= 3.10 version:
def foo(return_more: bool) -> DataType | tuple[DataType, MoreDataType]: ...
But i would definitely avoid to do that if possible. I would maybe do something like this instead:
def foo(return_more: bool) -> tuple[DataType, MoreDataType | None]:
...
if return_more:
return data, more_data
return data, None
Or if data
is a dict
, just update it with more_data
:
def foo(return_more: bool) -> dict[str, Any]:
...
if return_more:
return data.update(more_data)
return data
The difference is that with Protocol
you can define which method presence you want to ensure. Like i said: custom vs. generic.
From what i understand, Protocol
is for custom interfaces that you define (this object must have do_x()
method), while ABCs are generic (this object is iterable).
Certainly not the best, but codecademy is decent. After that, it should be enough for you to learn more deeply from official Python documentation, actual Python code base (from OSS repositories), and specific subjects from blog articles.
But it will highly depend on what type of content you like. For example some people may prefer books over interactive courses. If this is your case, i think this one is recognized as a very good one: https://learnpythonthehardway.org/python3/