File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Generators hold values that are fetched lazily.
2
+ # Meaning that the entire collection isn't stored
3
+ # in memory all at once, but rather retrieved when
4
+ # needed.
5
+
6
+ # This is best used when dealing with a large
7
+ # collection of items. Such as rows returned from
8
+ # a database call or looping over a large csv.
9
+
10
+ # Generators are intelligent enough to handle these
11
+ # large collections without running out of memory.
12
+ # They dispose of variables in memory that are no
13
+ # longer used and do not worry about variables
14
+ # that are not yet needed.
15
+
16
+ # Here's the syntax for a generator. It's just a
17
+ # function! Take note of the yield keyword. yield
18
+ # basically means 'return', but lets Python know
19
+ # we'll be coming back for more.
20
+ def color_generator ():
21
+ yield 'blue'
22
+ yield 'orange'
23
+ yield 'yellow'
24
+ yield 'purple'
25
+
26
+ # One way to use generators is by calling `next()`
27
+ # on it's instance
28
+ g = color_generator () # create the instance
29
+ next (g ) # 'blue'
30
+ next (g ) # 'orange'
31
+ next (g ) # 'yellow'
32
+ next (g ) # 'purple'
33
+
34
+ # However, once a generator is exhausted, it will
35
+ # not start back at the beginning.
36
+ next (g ) # Raises StopIteration error.
37
+
38
+ # They're also iterables. No StopIteration errors
39
+ # are thrown with this method.
40
+ for color in color_generator ():
41
+ print (color )
42
+
43
+ # 'blue'
44
+ # 'orange'
45
+ # 'yellow'
46
+ # 'purple'
47
+
You can’t perform that action at this time.
0 commit comments