您的位置:首页 > 编程语言 > Python开发

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

2015-11-09 15:11 651 查看
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 y

f(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:
pass

class B(A):
pass

isinstance(A(), A)  # returns True
type(A()) == A      # returns True
isinstance(B(), A)    # returns True
type(B()) == A        # returns False


以后判断类型最好用instance(),因为它可以正确判断子类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python