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错误,返回值包含在StopIterationvalue中。

5. 迭代器Iterator

  可以被next()函数调用并不断返回下一个值的对象称为迭代器。

6. 作用域

  通过_前缀来实现。类似_xxx__xxx这样的函数或变量就是非公开的(private)。

 

posted @ 2017-10-22 19:39  farmerspring  阅读(181)  评论(0编辑  收藏  举报