# 列表推导式不会再有变量泄露的问题 ''' 列表推导式、生成器表达式,以及同他们相似的集合(set)推导和字典(dict)推导,在Python3 中都有了自己的局部作用域,就像函数 表达式的内部的变量和赋值只在局部起作用,表达式的上下文里的同名变量还可以被正常引用,局部变量并不会影响到他们。 ''' # eg:python3 中: x = "ABC" dummy = [ord(x) for x in x] print(x) # ABC print(dummy) # [65, 66, 67] """ 在Python3中: x的值被保留了 列表推导式也创建了正确的列表 """ # eg:python2 中: x = "my precious" dummy = [x for x in 'ABC'] print(x) # C colors = ["black", "white"] sizes = ['S', 'M', 'L'] tshirts = [(color, size) for color in colors for size in sizes] print(tshirts) # [('black', 'S'), ('black', 'M'), ('black', 'L'), ('white', 'S'), ('white', 'M'), ('white', 'L')] for color in colors: for size in sizes: print((color, size)) # 结果如下所示: """ ('black', 'S') ('black', 'M') ('black', 'L') ('white', 'S') ('white', 'M') ('white', 'L') """