- 我其实不会通过索引下标去访问一个集合,而是直接通过迭代器——是的,就是你在STL中经常见到的iterator——来迭代遍历集合。
- 函数xrange不返回完整的list,而是逐步迭代。所以在生成数列的时候会比range节省内存。通常大数列枚举使用xrange更有效率。
- 生成器推导式是我的一种衍生形式。也是Python最强有力的语法之一。我们回顾前面的
几个例子,首先是著名的列表推导:
>>> #九九乘法表
>>> l = [(x, y, x*y) for x in range(1, 10) for y in range(1,
10) if x>=y]
>>> l
[(1, 1, 1), (2, 1, 2), (2, 2, 4), (3, 1, 3), (3, 2, 6), (3, 3,
9), (4, 1, 4), (4, 2, 8), (4, 3, 12), (4, 4, 16), (5, 1, 5),
(5, 2, 10), (5, 3, 15), (5, 4, 20), (5, 5, 25), (6, 1, 6), (6,
2, 12), (6, 3, 18), (6, 4, 24), (6, 5, 30), (6, 6, 36), (7, 1,
7), (7, 2, 14), (7, 3, 21), (7, 4, 28), (7, 5, 35), (7, 6,
42), (7, 7, 49), (8, 1, 8), (8, 2, 16), (8, 3, 24), (8, 4,
32), (8, 5, 40), (8, 6, 48), (8, 7, 56), (8, 8, 64), (9, 1,
9), (9, 2, 18), (9, 3, 27), (9, 4, 36), (9, 5, 45), (9, 6,
54), (9, 7, 63), (9, 8, 72), (9, 9, 81)]
- 如果你需要一个不执行任何代码的空语句,类似C++中的;,那么,找我pass就对了。
- 利用try/except/finally结构,可以很方便的捕获异常。而需要手动抛出异常的话,也只需要一个raise语句。
- 没有返回值的函数等同于返回None。
- Python函数定义的时候,形参没有类型约束。这根源于Python的动态类型思想。因此,您可以方便的抽象出代码行为;也因此,您不能通过不同参数类型定义函数重载,包括类成员函数的定义也是如此。不过您可以通过定义不同的参数表来区分不同的函数定义。
- 函数可以通过形如key=value的形式定义可选的参数,在函数调用时,可以按顺序传入参数值,也可以通过参数名指定传入所需的参数。
- 在python家族中,我是函数的一种简写形式,通常用于在运行期定义临时的匿名函数:
>>> f = lambda x, y:x**2+y**2
>>> f(20, 5)
425
- 在python定义后面加入一行字符串的话,Python解释器会视其为该定义的说明文档,可以通过help得到它。
- 在python中,所有的成员方法都是虚的,这充分满足了动态类型的需要。
- Python类型的定义中,名为__init__的函数即为构造函数。因为构造函数是一个成员方法,您可以通过引用self为对象添加成员变量。
- 关键字del用于删除命名或者对象引用。也用于删除序列元素。
- Python脚本可以通过本文格式保存,并且做为运行时组件在运行时导入代码中,人们通常称我为模块。模块名与代码文件的主文件名相同。例如,如果您编写了一个名为Items.py的程序,可以使用import Items来引入。
阅读(744) | 评论(0) | 转发(0) |