Python語言特性
1.Python的函數(shù)參數(shù)傳遞
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 允許創(chuàng)建類或修改類
通常ORM框架中使用,只有使用者才能根據(jù)表結(jié)來動(dòng)態(tài)地設(shè)計(jì)出對(duì)應(yīng)的類。
3. @staticmethod @classmethod
||實(shí)例方法|類方法|靜態(tài)方法|
|:--|:--|:--|:--|
|a = A()|a.foo(x)|a.class_foo(x)|a.static_foo(x)|
|A|不可用|A.class_foo(x)|A.static_foo(x)|
4.類變量 實(shí)例變量
5.自省機(jī)制
6.單下劃線和雙下劃線
foo:一種約定,Python內(nèi)部的名字,用來區(qū)別其他用戶自定義的命名,以防沖突.
_foo:一種約定,用來指定變量私有.程序員用來指定私有變量的一種方式.
__foo:這個(gè)有真正的意義:解析器用_classname__foo來代替這個(gè)名字,以區(qū)別和其他類相同的命名.
7.字符串格式化%和.format
8.字典推導(dǎo)
9.迭代器和生成器
http://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python
10.*args and **kwargs
11.面向切片編程和裝飾器
12.鴨子類型
13.Python中的重載
Python可以接受任何類型的參數(shù)并且可用缺省參數(shù),故不需要重載。
14.新式類和舊式類
15. new和init區(qū)別
1.new是一個(gè)靜態(tài)方法,而init是一個(gè)實(shí)例方法.
2.new方法會(huì)返回一個(gè)創(chuàng)建的實(shí)例,而init什么都不返回.
3.只有在new返回一個(gè)cls的實(shí)例時(shí)后面的init才能被調(diào)用.
4.當(dāng)創(chuàng)建一個(gè)新實(shí)例時(shí)調(diào)用new,初始化一個(gè)實(shí)例時(shí)用init.