Modern APIs with FastAPI and Python Transcripts
Chapter: Modern language foundations
Lecture: Adding type hints
0:00 Alright. Now, let's just make a copy.
0:01 So we have this old version without any type hints,
0:04 and I'll have one with actual hints, types.
0:07 So let's just set that to run.
0:08 See, it still works, but what I want to do is add some extra information.
0:12 I would like to say that this can be an integer except for, hold on,
0:16 PyCharm now says there's a problem.
0:18 You said it was an integer like 1 or 7 or -3,
0:22 that's not what none is. None cannot be interacted with as an integer, right?
0:27 So when we have a type that is either none or something,
0:30 we have to say this is in optional of that thing.
0:34 An optional is not built into the language.
0:36 Some languages have really cool syntax like that to mean
0:39 it could be none, but we don't have that.
0:41 So we have to import this from typing,
0:45 okay? So now it lets us either have it as an integer or none,
0:50 right? So now we have described this as either being an integer or being just
0:55 none. Down here, let's go down,
0:57 it's going to know that this could be an integer because it's set to zero.
0:59 Probably don't need to do that.
1:01 But remember, we saw this "i." We got some help,
1:05 but only because we were calling it.
1:07 Take that away for a second.
1:08 And now if we say "i." again, no help.
1:11 So the next thing to do is say what goes here.
1:15 So what we can do is say this is an iterable. Now again,
1:18 this doesn't come up just like optional.
1:20 We've gotta import that from typing,
1:21 and that tells us that we can put it into a loop,
1:24 but it still doesn't tell you what it is,
1:26 so we can say it is an iterable of this item, named tuple,
1:30 if we say that, check this out.
1:32 Here's our value that we're looking for. Perfect.
1:34 And if we had other, all of sudden no,
1:36 no, no, you can't have other.
1:38 There is no other. There's item and there's name. Sorry,
1:42 there's name and there's value. Again,
1:44 all of this works. We might as well go over here and say this is going
1:46 to return, I think if we look at the items we create, no,
1:50 no, these are integers. So we can just say this returns and int, alright?
1:53 Perfect. Perfect. And now if we call it down here,
1:56 nothing. Nothing should be changed.
1:59 But you can notice that if we were trying to pass in, like here,
2:03 7, It'll give you a warning like,
2:05 "hey, 7 is not iterable,
2:06 we expected something you could loop over,
2:08 not a 7". Alright, so let's just run it one more time.
2:11 Make sure it still works. It does.
2:14 But now, not only does it work,
2:16 it works better with the editors because of this kind of stuff and the validation for
2:21 verifying what we're passing in and what we're getting back.
2:25 Perfect. So this is the idea of type hints. It's super valuable in general,
2:29 but it is extra useful in FastAPI because not only does it tell you what
2:33 the program does, FastAPI actually takes that and uses it for things like type conversion and whatnot.