《用Python玩转数据》第1周学习笔记(Part2)

来源:互联网 发布:mysql每天自动弹出 编辑:程序博客网 时间:2024/05/29 05:01

1、range和xrange:http://ciniao.legu.cc/article.php?id=17
大白话:
range直接就生成一个list,把内存给占上了。
xrange像一个管家,用的时候返回1个值,不用的时候也不占地方。
对于程序设计者来说,两者没什么区别。但对于程序和运行程序的机器来说,xrange省内存。

python3没有xrange,但是python3的range == python2的xrange.

2、循环中的break和continue:
break表示跳出当前循环并终止。
continue表示跳出当前循环,然后继续进入循环。

3、循环中的else
如果while或者for循环是正常结束的(没有被break或者return终止),那么则执行else语句块。这一点与if…else不同,需要注意。

4、函数注释:

def function():    'doc_string'

函数的第1行一般写个string,用于函数注释。可以用fountion.__doc__ 查看函数注释。如果使用#或者3引号来写注释,就无法用命令查看了。

养成好习惯!

5、函数的关键字参数:

def f(x, y):    if y:        print x    else:        print yf(1, True)f(y = False, x = 2)f(3, y = True)f(y = False, 4)f(a = 5, b = True)f(x = 6, True)f(False, x = 7)

运行结果:
这里写图片描述
可以看到:

  • 如果所有参数都是关键字参数,并且关键字正确,那么顺序无所谓。
  • 如果只写部分的关键字参数,并且符合位置顺序,并且关键字参数排在后面,那么函数可以正常运行。
  • 但如果只写部分的关键字参数,关键字不对,或者关键字参数放到了前面,或者关键字位置不对,则程序报错。

6、lambda函数(匿名函数)
还使用上面的f() ,得出下面的代码:

f1 = lambda a, b, c: a(b, c)f1(f, 10, True)

运行结果是 10
用起来比较麻烦。

7、递归:在函数中再调用自身。效率很低。

def fib(n):    if n == 0 or n == 1:        return n    else:        return (fib(n - 1) + fib(n - 2))

fib(10) 的结果是55,fib(100) 就死掉了~~

8、is== 的区别:
http://stackoverflow.com/questions/132988/is-there-a-difference-between-and-is-in-python
== 仅比较value,is 比较是否是同一个object

这里写图片描述

9、type()和isinstance()的区别:
http://www.jb51.net/article/54275.htm

class A:    passclass B(A):    passisinstance(A(), A)  # returns Truetype(A()) == A      # returns Trueisinstance(B(), A)    # returns Truetype(B()) == A        # returns False

以后判断类型最好用instance(),因为它可以正确判断子类

0 0
原创粉丝点击