WEBVTT

1
00:00:00.550 --> 00:00:01.960
<v ->Hi guys and welcome back.</v>

2
00:00:01.960 --> 00:00:03.800
In this video, we learn about

3
00:00:03.800 --> 00:00:06.643
default parameter values in Python.

4
00:00:07.480 --> 00:00:08.320
Let's get started.

5
00:00:08.320 --> 00:00:10.050
We've got a function here called add

6
00:00:10.050 --> 00:00:11.430
and it takes two arguments.

7
00:00:11.430 --> 00:00:14.220
So it has two parameters, x and y.

8
00:00:14.220 --> 00:00:15.053
And then it's gonna print

9
00:00:15.053 --> 00:00:16.330
the result of adding them together.

10
00:00:16.330 --> 00:00:18.780
So normally, you would call this add function

11
00:00:18.780 --> 00:00:20.200
with two arguments.

12
00:00:20.200 --> 00:00:22.020
So five comma eight.

13
00:00:22.020 --> 00:00:24.380
Gives them five and eight to x and y.

14
00:00:24.380 --> 00:00:27.010
However, you can have default values

15
00:00:27.010 --> 00:00:29.370
for one or two of these parameters

16
00:00:29.370 --> 00:00:31.420
by just saying in the function definition,

17
00:00:31.420 --> 00:00:32.763
y equals eight.

18
00:00:33.910 --> 00:00:36.780
Again, we usually don't put spaces around this equal sign

19
00:00:36.780 --> 00:00:39.130
when we use it for a default parameter value

20
00:00:39.130 --> 00:00:41.930
and what this is that x is a required parameter

21
00:00:41.930 --> 00:00:44.410
and y is now an optional parameter.

22
00:00:44.410 --> 00:00:47.520
If you don't give y a value when you call the function,

23
00:00:47.520 --> 00:00:49.080
it will use the value eight,

24
00:00:49.080 --> 00:00:50.800
which is defined here.

25
00:00:50.800 --> 00:00:53.420
So, instead of doing add five comma eight,

26
00:00:53.420 --> 00:00:55.570
you can just do add five.

27
00:00:55.570 --> 00:00:57.620
And five will become the value for x,

28
00:00:57.620 --> 00:01:00.470
since that is the first parameter and the first argument,

29
00:01:00.470 --> 00:01:02.640
and because there is no second argument,

30
00:01:02.640 --> 00:01:05.760
y will use its default value eight.

31
00:01:05.760 --> 00:01:07.520
So if we run this code here,

32
00:01:07.520 --> 00:01:10.260
you'll see that 13 comes out.

33
00:01:10.260 --> 00:01:12.870
Similarly, you can do, of course,

34
00:01:12.870 --> 00:01:15.030
x equal five, if you like,

35
00:01:15.030 --> 00:01:17.250
and still y doesn't have a value,

36
00:01:17.250 --> 00:01:19.900
so it will use the default value of eight.

37
00:01:19.900 --> 00:01:22.030
So this means exactly the same thing.

38
00:01:22.030 --> 00:01:26.190
What can't do though is do this, y equal five,

39
00:01:26.190 --> 00:01:28.700
because x is a required parameter,

40
00:01:28.700 --> 00:01:30.230
you need to give it a value,

41
00:01:30.230 --> 00:01:31.860
and here, we're not given it,

42
00:01:31.860 --> 00:01:33.550
so if we were to run this code,

43
00:01:33.550 --> 00:01:35.540
you would get the add is missing

44
00:01:35.540 --> 00:01:37.840
one required positional argument, x.

45
00:01:37.840 --> 00:01:39.633
So you need to give x a value.

46
00:01:40.640 --> 00:01:44.490
As usual, you can still do x equal five, y equal five,

47
00:01:44.490 --> 00:01:45.510
that's totally fine.

48
00:01:45.510 --> 00:01:48.660
And of course, you cannot do x equals five comma five,

49
00:01:48.660 --> 00:01:50.050
because as we learned earlier on,

50
00:01:50.050 --> 00:01:53.170
you can't put a positional argument after a keyword

51
00:01:53.170 --> 00:01:55.290
or named argument.

52
00:01:55.290 --> 00:01:57.490
Similarly, that also applies for

53
00:01:57.490 --> 00:01:59.160
the add function definition.

54
00:01:59.160 --> 00:02:02.290
You cannot have a default parameter

55
00:02:02.290 --> 00:02:05.080
be followed by a non default parameter.

56
00:02:05.080 --> 00:02:06.490
So here, it'll tell you

57
00:02:06.490 --> 00:02:09.310
that a default value must be specified here,

58
00:02:09.310 --> 00:02:12.310
in y, because you've specified one earlier on.

59
00:02:12.310 --> 00:02:15.690
So default parameter values must go at the end,

60
00:02:15.690 --> 00:02:19.943
after all the required non default parameters.

61
00:02:22.500 --> 00:02:24.310
Something to take into consideration

62
00:02:24.310 --> 00:02:25.980
when you are defining functions

63
00:02:25.980 --> 00:02:28.790
is to usually not do this.

64
00:02:28.790 --> 00:02:31.570
So here we've got a variable called default_y,

65
00:02:31.570 --> 00:02:32.970
and it's equal to three.

66
00:02:32.970 --> 00:02:34.610
And then we're defining an add function

67
00:02:34.610 --> 00:02:39.610
and making the y parameter equal to our default_y variable.

68
00:02:39.740 --> 00:02:42.220
So, y will equal three,

69
00:02:42.220 --> 00:02:45.280
and that will be the default value for the y parameter.

70
00:02:45.280 --> 00:02:48.320
Now we can call add with the value two, let's say,

71
00:02:48.320 --> 00:02:51.380
and then we do for x and three for y,

72
00:02:51.380 --> 00:02:53.520
giving us a total of five.

73
00:02:53.520 --> 00:02:58.110
However, if we then go and change default y to four,

74
00:02:58.110 --> 00:03:02.170
and then we add again, let's say add two,

75
00:03:02.170 --> 00:03:04.960
now you'll see that actually,

76
00:03:04.960 --> 00:03:07.640
we get the same value back from the function.

77
00:03:07.640 --> 00:03:10.610
So changing a variable that has been used

78
00:03:10.610 --> 00:03:12.770
as a default parameter value,

79
00:03:12.770 --> 00:03:14.630
does not modify the function.

80
00:03:14.630 --> 00:03:17.770
So this value here, this three,

81
00:03:17.770 --> 00:03:20.550
is defined when the function gets created

82
00:03:20.550 --> 00:03:22.190
and it doesn't change after that,

83
00:03:22.190 --> 00:03:24.020
if you reassign the variable.

84
00:03:24.020 --> 00:03:26.470
So this is why I don't usually recommend doing this,

85
00:03:26.470 --> 00:03:29.200
because it can get really confusing really quickly.

86
00:03:29.200 --> 00:03:32.650
So stick to putting the actual value on the function,

87
00:03:32.650 --> 00:03:34.990
unless you really have to do something different,

88
00:03:34.990 --> 00:03:36.850
and then make it clear that that value

89
00:03:36.850 --> 00:03:41.180
is not going to change after defining the function.

90
00:03:41.180 --> 00:03:42.490
So that is how you define

91
00:03:42.490 --> 00:03:44.940
default parameter values in Python.

92
00:03:44.940 --> 00:03:47.410
Just put them in the function definition,

93
00:03:47.410 --> 00:03:48.260
just make sure that they are

94
00:03:48.260 --> 00:03:50.700
at the end of the parameter lists.

95
00:03:50.700 --> 00:03:52.500
Thank you for joining me in this video

96
00:03:52.500 --> 00:03:54.150
and I'll see you in the next one.

