Python语言特性
1.Python的函数参数传递
a=1
def fun(a):
a = 2
fun(a)
print a # 1
a=[]
def fun(a):
a.append(1)
fun(a)
print a # [1]
2.元类 metaclass
metaclass 允许创建类或修改类
通常ORM框架中使用,只有使用者才能根据表结来动态地设计出对应的类。
3. @staticmethod @classmethod
||实例方法|类方法|静态方法|
|:--|:--|:--|:--|
|a = A()|a.foo(x)|a.class_foo(x)|a.static_foo(x)|
|A|不可用|A.class_foo(x)|A.static_foo(x)|
4.类变量 实例变量
5.自省机制
6.单下划线和双下划线
foo:一种约定,Python内部的名字,用来区别其他用户自定义的命名,以防冲突.
_foo:一种约定,用来指定变量私有.程序员用来指定私有变量的一种方式.
__foo:这个有真正的意义:解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名.
7.字符串格式化%和.format
8.字典推导
9.迭代器和生成器
http://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python
10.*args and **kwargs
11.面向切片编程和装饰器
12.鸭子类型
13.Python中的重载
Python可以接受任何类型的参数并且可用缺省参数,故不需要重载。
14.新式类和旧式类
15. new和init区别
1.new是一个静态方法,而init是一个实例方法.
2.new方法会返回一个创建的实例,而init什么都不返回.
3.只有在new返回一个cls的实例时后面的init才能被调用.
4.当创建一个新实例时调用new,初始化一个实例时用init.