python升级功能
1. 切片(支持倒数切片)
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] >>> L[0:3] ['Michael', 'Sarah', 'Tracy']
2. 迭代(循环中的变量有两个)
>>> for x, y in [(1, 1), (2, 4), (3, 9)]: ... print(x, y) ... 1 1 2 4 3 9
3. 列表生成式
>>> [x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100]
4. 生成器:generator
一边循环一边计算
创建:把列表生成式中的 [ ] 改成 ( )
获取下一个返回值:next() 或者 for循环
如果一个函数定义中包含yield
关键字,那么这个函数就不再是一个普通函数,而是一个generator。generator的函数,在每次调用next()
的时候执行,遇到yield
语句返回,再次执行时从上次返回的yield
语句处继续执行。yield表示暂停。
def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return 'done'
用for
循环调用generator时,发现拿不到generator的return
语句的返回值。如果想要拿到返回值,必须捕获StopIteration
错误,返回值包含在StopIteration
的value
中。
5. 迭代器Iterator
可以被next()
函数调用并不断返回下一个值的对象称为迭代器。
6. 作用域
通过_
前缀来实现。类似_xxx
和__xxx
这样的函数或变量就是非公开的(private)。