Python 021 內建方法講解二

2022-05-30 23:00:07 字數 2694 閱讀 5414

1.__del__方法:

a:構造方法:建立乙個空間,  析構方法;釋放乙個空間;

b:觸發del的情況:python直譯器的垃圾**機制,和遇到 del 物件名

c:析構方法的思想:

class

a:

def__del__

(self):

print

(self)

a =a()

del a #

這裡先執行了__del__方法,再刪除物件a,因為執行__del__方法時還要傳入self;

print

(a)#

輸出結果:

<__main__.a object at 0x0000013cf5f59128> 被執行了

traceback (most recent call last):

file

"d:/python/course/23.模組/day23/3.析構方法.py

", line 49, in

print

(a)nameerror: name 'a

'isnot defined

d:python的垃圾**機制:

class

a:

def__del__

(self):

print('

python直譯器會在程式跑結束後執行我')

a =a()

print

(a)#

輸出結果:

<__main__.a object at 0x000001f823159128>python直譯器會在程式跑結束後執行我

總結:del方法:是去歸還/釋放一些在建立物件時借用的一些資源(有可能是作業系統的資源)

例子:像一些常用的變數在python底層的一些物件,都有python直譯器幫你**,

而像一些像作業系統借用的資源就

需要你執行**方法自己釋放;

像檔案控制代碼;執行close操作,還有一些網路資源;

3.計算機內部執行一些小常識:

a:申請一塊空間 作業系統會分配給你的  b:在這一塊空間之內的所有事,歸你的python直譯器管理;

*****所以在你借用了作業系統資源時,在程式結束之前要還回去,在del方法中寫關閉**;

4.item系列:

1)getitem:物件['key']觸發該方法;

class

a:

def__getitem__

(self, item):

print

(item)

return item #

[item]觸發getitem方法

a =a()

print(a['a'

])#輸出結果:

a a

2)getitem和setitem的一些結合應用:

class

a:

def__getitem__

(self, item):

return getattr(self,item) #

相當於self.key

def__setitem__

(self, key, value):

setattr(self,key,value)

#相當於self.key = value

a =a()a['

k'] = 'v'

print(a['k'

])class

a:

def__setitem__

(self, key, value):

self.key =value

def__getitem__

(self, item):

return

self.key

a =a()a['

k'] = 'v'

print(a['k'

])#這兩段**的結果一樣都是v,上面用到了對映

5.__hash__方法:

1)底層資料結構基於hash值定址的優化操作

2) hash是乙個演算法,保證不同值的hash結果不一樣的

對同乙個值多次在python直譯器中執行的時候,hash值是不同的

但是對同乙個值,在同一次執行python**的時候hash值永遠不變

3)hash值不是萬能的,有可能兩個值的hash值相同,所以如果在乙個變數進行hash演算法之後發現位址有值,會進行乙個判斷,判斷兩個變數的值是否相等,若相等覆蓋,若不等,則對這個變數再進行二次定址,也遵循乙個演算法;

4)hash和eq(obj)  # obj內部必須含有__hash__方法

class

a:

def__init__

(self,name):

self.name =name

def__eq__

(self, other):

if self.name ==other.name:

return

true

a = a('s'

)b = a('s'

)c = a('s'

)print(a == b ==c)

#輸出結果

true

::::::==觸發物件中的eq方法

Python02 1 什麼是資料

x 10,10是我們要儲存的資料 資料是用來表示狀態的,不同的狀態就應該用不同的型別的資料去表示 作用 年紀,等級,身份證號,qq號等整型數字相關 定義 age 10 本質age int 10 在python2中 32位電腦取值範圍 2 31 1 2 31 1 64位電腦取值範圍 2 63 1 2 ...

小甲魚python021課後題

請使用lambda表示式將下邊函式轉變為匿名函式?def fun a x,y 3 return x yanswer lambda x,y 3 x y 請將下邊的匿名函式轉變為普通的屌絲函式?lambda x x if x 2 else noneanswer def fun x if x 2 retu...

python 內建 Python內建方法大全

新增元素 集合.add 集合.update 一次新增多個值 集合隨機刪除 集合.pop 集合刪除指定元素 集合.remove 沒有找到會奔潰 集合.discard 沒有找到不會奔潰 移除空白 strip 取字串兩邊空格 lstrip 取字串左邊空格 rstrip 取字串右邊空格 括號中可以新增引數指...