日子過得真快,又是想念你們的一天呢,今天也要記得微笑哦!!很久沒有玩adobe的東西了,這幾天摸魚一下,手感已經生疏了,以前還打算一直學習下去,後來慢慢轉變成了在合成上面的興趣了呢,我知道很醜啦,所以只是在學習前的日常扯皮嘛,好啦好啦,開始學習了。 上次講到了一小部分的裝飾器,現在我們接著開始複習, ...
日子過得真快,又是想念你們的一天呢,今天也要記得微笑哦!!很久沒有玩adobe的東西了,這幾天摸魚一下,手感已經生疏了,以前還打算一直學習下去,後來慢慢轉變成了在合成上面的興趣了呢,我知道很醜啦,所以只是在學習前的日常扯皮嘛,好啦好啦,開始學習了。
上次講到了一小部分的裝飾器,現在我們接著開始複習,關於decorator,要自帶參數時,需要一個返回derector的高階函數。
@log('execute')
def now():
print(...)
這個就相當於now= log('execute')(now)
對於大量二進位轉化可以自定義一個方法:
def int2(x,base=2):
return int(x,base)
偏函數functools.partial() 固定了某一些參數
創建偏函數時,可以接受函數對象、*args,**kw三個參數
import functools
max2= functools.partial(max,10) 這裡的10將作為*arg的一部分自動加到左邊了
即max2(5,6,7)相當於
args=(10,5,6 7)
max(*args)
模塊module 一個Py文件
包package 按目錄組織模塊
對於sys模塊的argv變數有>=1個元素,第一個元素必定是文件名。
作用域 通過_作為首碼 此外還有特殊變數__xxx__註意這裡是兩個下滑空格
_xxx __xxx是private,不應該直接被引用
關於對象和模板其實也沒設好說的,就兩種編程的方式嘛,面向對象的話特點就是東西都一個個打包好,然後用哪個就調用哪一個,面向過程的話就是一整套行雲流水地走下來,基本上各有各的特點吧,不過個人上建議可能面向對象比較好一點,對於後期維護這一塊可能也是比較輕鬆的。
數據封裝的話就是def定義方法加上__的那種私有變數吧,但是也只是名義上的封裝不被隨意調度,如果你硬是要調用的話也不是不行。
關於類,類的定義過程中第一個傳入的參數一般是object,而方法傳入的就是self,沒什麼為什麼,只是一種約定俗成,要改也不是不行,只是大家都統一一些規範的話在交流上就會減少很多麻煩,而且這樣子定義本來就很好,幹嘛要另闢蹊徑呢。
繼承和多態一個例子就明白了,class Animal()........classDog(Animal) 懂?在繼承父類後你也可以對子類經一部增加一些方法,這個時候如果子類中的方法和父類的重名了,則子類就會覆蓋父類的那個方法。莫非這就是所謂的逆子哈哈哈哈!!!
是子類必屬父類,是父類卻不一定。
多態的好處,就是不同的類的對象可以用同一種方法
開閉的原則就是多態,對擴展開發;允許新增子類 對修改封閉:不需要修改依賴animal類的run_twice的函數等
靜態語言傳入animal 類時對象必須為animal或者其子類,否則無法調用run函數
動態語言不需要傳入animal類,只要對象有一個run方法即可
type()模塊用於檢測判斷
isinstance(a,(b,c))判斷a是不是屬於b或者c,當然後面也可以直接放一個,比如就只判斷a是不是b,最後運行結果是true或者false
dir()返回包含字元串的list,獲得對象的所有屬性和方法