python3個人學習總結

2021-08-14 19:41:12 字數 3354 閱讀 6924

python3個人學習總結

由於自己很久一段時間沒接觸python的話就會生疏,所以寫了summary以防忘記,哈哈哈哈。。

對於不變物件來說,呼叫物件自身的任意方法,也不會改變該物件自身的內容。相反,這些方法會建立新的物件並返回,這樣,就保證了不可變物件本身永遠是不可變的。

函式名其實就是指向乙個函式物件的引用,完全可以把函式名賦給乙個變數,相當於給這個函式起了乙個「別名」。

python2中的range返回的是乙個列表。

python3中的range返回的是乙個迭代值。

生成器: g = (x*x for x in range(10));

列表(tuple)或者字典傳參: *args,**kwargs。

高階函式: map(func,*args) reduce filter sorted:排序的關鍵在於實現乙個對映函式。key代表的是乙個func,可以是系統自帶的,也可以是自己定義的函式。

裝飾器decorator: functools.wraps 則可以將原函式物件的指定屬性複製給包裝函式物件, 預設有modulenamedoc,或者通過引數選擇。

偏函式: functools.partial(func,引數) 引數可以是dict。

eg: int2=functools.partial(int,base=2);eg: int2=functools.partial(int,base=2);

其實就是建立乙個新的函式,而這個新的函式可以固定原函式的部分引數。

每乙個包目錄下面都會有乙個__init__.py的檔案,這個檔案是必須存在的,否則,python就把這個目錄當成普通目錄,而不是乙個包。init.py可以是空檔案,也可以有python**,因為__init__.py本身就是乙個模組,而它的模組名就是包的名字。

isinstance: 可以用來判斷資料型別。 eg: isinstance([1,2,3],(list,tuple))

例項屬性和類屬性的區別: 類屬性對於每個類例項物件都有,而相同的例項屬性可以覆蓋掉類屬性,但是對其他類例項物件來說沒有影響。

給例項繫結乙個方法: from types import methodtype s.set_age = methodtype(set_age,s);其中set_age is a function,s is a instance of class。

注意: 給乙個例項繫結的方法,對另乙個例項是不起作用的。為了給所有例項都繫結方法, 可以給class繫結方法。student.set_age = set_age;

slot: 限制例項的屬性。 eg:slot= (『name』,『age』); 注意: 僅對當前的類例項起作用,對繼承的子類是不起作用的。

@property: 將方法變成屬性。

class student(object):

@property

def score(self):

return self._score

@score.setter

def score(self,value):

self._score = value

檔案操作:

1)read: 一次性讀取整個檔案。

2)readline: 讀取一行。

3)readlines: 讀取整個檔案到迭代器。

note:

1)用with開啟檔案的方式比較好,會自動關閉檔案。

2)讀取非utf-8編碼的文字檔案,需要給open()函式傳入encoding引數。

3)如果文字檔案中可能混雜了一些非法的編碼的字元,open()還可以接受乙個errors引數,處理最簡單的方法是忽略(ignore),即errors=『ignore』。

stringio: 在記憶體中讀寫str。 write getvalue

bytesio: 在記憶體中讀寫二進位制資料。write getvalue

pickle: 序列化。dumps loads dump(data,fw) load(fr)

json

協程: 單執行緒的非同步程式設計模型。

分布式程序: multiprocessing.managers

正規表示式:

注意: 如果乙個正規表示式要重複使用的話,出於效率的考慮,可以預編譯該正規表示式。 rec = re.compile(pat) rec.match(…)

collections: 集合模組。

namedtuple: point = namedtuple(『point』,[『x』,『y』]) p = point(1,2) p.x p.y

deque:

counter:

hashlib: 雜湊演算法: md5() sha1()

md5: md5 = hashlib.md5() #這裡可以賦初值 md5.update(str.encode(『utf-8』) print(md5.hexdigest())

應用: 資料庫密碼: 加鹽 get_md5(password+username+thesalt)

安裝虛擬環境:

pip install virtualenv # 安裝virtualenv

virtualenv --no-site-packages venv # 建立虛擬環境資料夾

source venv/bin/activate # 啟用環境

deactivate # 退出環境

協程: 利用程序+協程可以很大的程度上利用多核的cpu。

python對協程的支援是通過generator實現的。

如果乙個函式包含yield關鍵字,那這個函式就不是普通的函式了,而是乙個generator。

注意: yield不但可以返回乙個值,還可以接收呼叫者發出的引數。 先返回後接收呼叫者發出的引數。 recieve = yield value

asyncio模組: @asynciio.coroutine def func(): … yield from …

loop = asyncio.get_event_loop()

tasks # is a list of tasks, stack.

loop.run_until_complete(asynciio.wait(tasks))

loop.close()

else note: connect = asyncio.open_connection(host,port)

reader,writer = yield from connect

sys:

sys.argv:第乙個元素永遠是命令列執行的.py檔名。

個人學習總結

組 groupadd 建立新群組 groudel 刪除組groudmod 修改組的資訊 cat etc group 檢視組的資訊 使用者 group 換成user cat etc passwd 檢視使用者的資訊 ps 顯示當前程序資訊 常用引數 e 和 aux kill 結束程序 常用引數 9 ki...

個人學習總結

一 請根據自己的學習實踐回答自己當初提的問題,並提出乙個新的問題。1.就在第一章的概論裡作者就推出了 軟體 程式 軟體工程 很明顯,開發乙個軟體,軟體工程就處於一種舉足輕重的地位,程式加上軟體工程才能使乙個軟體完整。那軟體工程它有哪些驚奇的功能呢?答 軟體工程主要是降低軟體系統的複雜性 提高其可控性...

UE4個人學習總結

級聯粒子系統編輯器,可以對粒子進行模組化的設計。乙個粒子系統建立後只有很少的 最基礎 的屬性,以及一些行為模組。每個模組代表了粒子行為的乙個特定方面,並只對行為的該方面提供屬性引數,比如顏色 生成的位置 移動行為 縮放行為,及其他等。使用者可以在需要的時候新增或者刪除乙個模組,來進一步定義粒子的整體...