1,type和instance:
type可以适用于任何类型,包括用户自定义的类型,instance是用来判断一个实例属不属于某一个类。
2,xrange和range:
两者功能类似,但是xrange适用于很大范围的列表,不具体化,也就是省内存,并且仅适用于for语句当中。
3,tuple和list
tuple是不可变对象,可用于hash的key,而list的就不行了。创建单元素的tuple,则需要t = (‘abc’,)
4,迭代器和生成器
迭代器借助于java中的思想,好理解;但是生成器就不好说了,还没有用过,好像跟yield有关。
5,特殊方法,classmethod和staticmethod
对于classmethod的参数,需要隐式地传递类名,而staticmethod参数中则不需要传递类名,其实这就是二者最大的区别。
二者都可以通过类名或者类实例对象来调用,因为强调的是classmethod和staticmethod,所以在写代码的时候最好使用类名,良好的编程习惯吧。
对于staticmethod就是为了要在类中定义而设置的,一般来说很少这样使用,可以使用模块级(module-level)的函数来替代它。既然要把它定义在类中,想必有作者的考虑。
对于classmethod,可以通过子类来进行重定义。