1. 程式人生 > >廖雪峰python摘錄6

廖雪峰python摘錄6

rar art ocs 沒有 概念 註意 表示 tar 完全

 1 def now():
 2     print(hello)
 3 
 4 import functools
 5 
 6 def log(func):
 7     @functools.wraps(func)
 8     def wrapper(*args,**kw):
 9         print(begin call %s():% func.__name__)
10         func_tmp=func(*args,**kw)
11         print(end call %s():% func.__name__)
12         return
func_tmp
13 return wrapper

2、簡單總結functools.partial的作用就是,把一個函數的某些參數給固定住(也就是設置默認值),返回一個新的函數,調用這個新函數會更簡單。

3、

使用模塊有什麽好處?

最大的好處是大大提高了代碼的可維護性。其次,編寫代碼不必從零開始。當一個模塊編寫完畢,就可以被其他地方引用。我們在編寫程序的時候,也經常引用其他模塊,包括Python內置的模塊和來自第三方的模塊。

使用模塊還可以避免函數名和變量名沖突。相同名字的函數和變量完全可以分別存在不同的模塊中,因此,我們自己在編寫模塊時,不必考慮名字會與其他模塊沖突。但是也要註意,盡量不要與內置函數名字沖突。點這裏查看Python的所有內置函數。

你也許還想到,如果不同的人編寫的模塊名相同怎麽辦?為了避免模塊名沖突,Python又引入了按目錄來組織模塊的方法,稱為包(Package)。

4、常的函數和變量名是公開的(public),可以被直接引用,比如:abcx123PI等;

類似__xxx__這樣的變量是特殊變量,可以被直接引用,但是有特殊用途,比如上面的__author____name__就是特殊變量,hello模塊定義的文檔註釋也可以用特殊變量__doc__訪問,我們自己的變量一般不要用這種變量名;

類似_xxx__xxx這樣的函數或變量就是非公開的(private),不應該被直接引用,比如_abc__abc等;

5、

我們在模塊裏公開greeting()函數,而把內部邏輯用private函數隱藏起來了,這樣,調用greeting()函數不用關心內部的private函數細節,這也是一種非常有用的代碼封裝和抽象的方法,即:

外部不需要引用的函數全部定義成private,只有外部需要引用的函數才定義為public。

6、面向對象最重要的概念就是類(Class)和實例(Instance),必須牢記類是抽象的模板,比如Student類,而實例是根據類創建出來的一個個具體的“對象”,每個對象都擁有相同的方法,但各自的數據可能不同。

7、class後面緊接著是類名,即Student,類名通常是大寫開頭的單詞,緊接著是(object),表示該類是從哪個類繼承下來的,繼承的概念我們後面再講,通常,如果沒有合適的繼承類,就使用object類,這是所有類最終都會繼承的類。 可以自由地給一個實例變量綁定屬性,比如,給實例bart綁定一個name屬性。

8、由於類可以起到模板的作用,因此,可以在創建實例的時候,把一些我們認為必須綁定的屬性強制填寫進去。通過定義一個特殊的__init__方法,在創建實例的時候,就把namescore等屬性綁上去。

9、由於類可以起到模板的作用,因此,可以在創建實例的時候,把一些我們認為必須綁定的屬性強制填寫進去。通過定義一個特殊的__init__方法,在創建實例的時候,就把namescore等屬性綁上去。

10、如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線__,在Python中,實例的變量名如果以__開頭,就變成了一個私有變量(private),只有內部可以訪問,外部不能訪問。

11、繼承有什麽好處?最大的好處是子類獲得了父類的全部功能。由於Animial實現了run()方法,因此,DogCat作為它的子類,什麽事也沒幹,就自動擁有了run()方法:

12、當子類和父類都存在相同的run()方法時,我們說,子類的run()覆蓋了父類的run(),在代碼運行的時候,總是會調用子類的run()。這樣,我們就獲得了繼承的另一個好處:多態。 新增一個Animal的子類,不必對run_twice()做任何修改,實際上,任何依賴Animal作為參數的函數或者方法都可以不加修改地正常運行,原因就在於多態。

13、如果要獲得一個對象的所有屬性和方法,可以使用dir()函數,它返回一個包含字符串的list

14、

廖雪峰python摘錄6