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?
 
     
     
    