Name localization
Now that we are familiar with all types of comprehensions and generator expression, let's talk about name localization within them. Python 3.* localizes loop variables in all four forms of comprehensions: list
, dict
, set
, and generator expressions. This behavior is therefore different from that of the for
loop. Let's see a simple example to show all the cases:
scopes.py
A = 100 ex1 = [A for A in range(5)] print(A) # prints: 100 ex2 = list(A for A in range(5)) print(A) # prints: 100 ex3 = dict((A, 2 * A) for A in range(5)) print(A) # prints: 100 ex4 = set(A for A in range(5)) print(A) # prints: 100 s = 0 for A in range(5): s += A print(A) # prints: 4
In the preceding code, we declare a global name A = 100
, and then we exercise the ...
Get Python: Journey from Novice to Expert now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.