On 17/08/2019 00:46, C W wrote:

The formatting seems messed up I'll try to straighten it out.
I hope I get it right!

Caveat: I'm no expert in the typing module, I've read the
docs but never found any use for it.

> What exactly is Tuple in the typing module? What does it do?

It specifies a tuple type. I assume you understand what
a tuple is in regular Python code?

> This is the definition from its website.
> https://docs.python.org/3/library/typing.html
> "A type alias is defined by assigning the type to the alias"
> 
> I have no idea what that means.

It just means that an alias is a label that you can use
to signify a type. And you can effectively create new
"types" by combining simpler types


> Here's the example from the documentation:
> 
> from typing import Dict, Tuple, Sequence
ConnectionOptions = Dict[str, str]
Address = Tuple[str,int]Server  = Tuple[Address, ConnectionOptions]

So this creates 3 new type aliases: ConnectionOptions, Address, Server
which are defined in terms of basic Python types,.
So Address is a tuple of a string and integer.

> def broadcast_message(message: str, servers: Sequence[Server]) -> None:

Ad this defines a function where the parameter types are
specified in terms of the new type names that we just
created.

> # The static type checker will treat the previous type signature as#
> being exactly equivalent to this one.

> def broadcast_message(
>         message: str,
>         servers: Sequence[Tuple[Tuple[str, int], Dict[str, str]]]) -> None:

And this is the same function but with the parameters expanded
into their traditional basic types.

Without all the type hinting gubbins it would simply be:

def broadcast_message(message, servers):
 ....

So all the detritus above is doing is attempting to make it
clearer what the two parameters actually are in data terms.
The first is a string, the second is a complex structure
of nested tuples and a dict (which probably should all
be wrapped in a class!).

> I think this even more confusing. Can someone explain this in simple words?
> I don't have a intense computer science background.

Type hints are a way to specify the types of function parameters.
They are an attempt to make complex type structures more readable
rather than fixing the data to be simpler (which, to be fair,
may not always be possible/easy). They are also an attempt to
bring some of the "benefits" of static typing into Python but
with very limited success. But they are only hints, you can
happily survive without them.

-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to