have a look at the following piece of code:
class a:
s = 'python'
b = ['p', 'y']
c = [x for x in s]
the output:
>>> a.c
['p', 'y', 't', 'h', 'o', 'n']
but when i try to limit the list with if:
class a:
s = 'python'
b = ['p', 'y']
c = [x for x in s if x in b]
Shows the following exception:
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
class a:
File "<pyshell#22>", line 4, in a
c = [x for x in s if x in b]
File "<pyshell#22>", line 4, in <listcomp>
c = [x for x in s if x in b]
NameError: global name 'b' is not defined
If a make global b
it works, why this is happening?