欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python中__new__方法的作用

 更新時(shí)間:2022年03月31日 10:45:28   作者:Python數(shù)據(jù)分析實(shí)例  
Python類(lèi)中有些方法名、屬性名的前后都添加__雙下畫(huà)線,這種方法、屬性通常屬于Python的特殊方法和特殊屬性。本文將聊聊構(gòu)造方法__new__實(shí)際程序的應(yīng)用場(chǎng)景,感興趣的可以了解一下

前言

Python中類(lèi)的構(gòu)造方法__new__方法有何作用?

Python類(lèi)中有些方法名、屬性名的前后都添加__雙下畫(huà)線,這種方法、屬性通常屬于Python的特殊方法和特殊屬性。通過(guò)重寫(xiě)這些方法或直接調(diào)用這些方法來(lái)實(shí)現(xiàn)特殊功能。今天來(lái)聊聊構(gòu)造方法__new__實(shí)際程序的應(yīng)用場(chǎng)景。

我們知道常見(jiàn)的初始化__init__方法,可以重寫(xiě)實(shí)現(xiàn)自己想要的初始化邏輯。最近實(shí)際業(yè)務(wù)開(kāi)發(fā)過(guò)程中碰到一類(lèi)問(wèn)題比如數(shù)據(jù)資源加載緩存機(jī)制的實(shí)現(xiàn),用到了魔法方法中構(gòu)造方法,其中__init__()和__new__是對(duì)象的構(gòu)造器,合理運(yùn)用將有效提高程序性能。

希望大家多結(jié)合自己的業(yè)務(wù)需求深刻理解,靈活運(yùn)用,使得代碼變得更加優(yōu)雅。

一、__new__方法簡(jiǎn)介

接下來(lái)通過(guò)實(shí)例逐步詳細(xì)闡述__ new __ 方法在類(lèi)初始化過(guò)程中是什么樣的存在!

1、初始化數(shù)據(jù)加載+解析類(lèi)實(shí)例

class?Solution(object):
????def?__init__(self,?name=None,data=None):
????????self.name?=?name
????????self.data?=?data
????????#初始化加載數(shù)據(jù)
????????self.xml_load(self.data)

????def?xml_load(self,data):
????????print("初始化init",data)

????def?Parser(self):
????????print("解析完成finish",self.name)

a?=?Solution(name="A111",data=10)
a.Parser()
b?=?Solution(name="A112",data=20)
b.Parser()
#?print(a)與?print(b)返回了類(lèi)的名稱(chēng)和對(duì)象的地址
print(a)
print(b)
#?可以使用內(nèi)置函數(shù)id()查看python對(duì)象的內(nèi)存地址
print(id(a))
print(id(b))

初始化init?10
解析完成finish?A111
初始化init?20
解析完成finish?A112
<__main__.Solution?object?at?0x0000024A3AF28D48>
<__main__.Solution?object?at?0x0000024A3B055C48>
2517839809864
2517841042504

注:

1、代碼實(shí)例化類(lèi)過(guò)程

一般使用__init__()方法初始化一個(gè)類(lèi)的實(shí)例,當(dāng)代碼中實(shí)例化一個(gè)類(lèi)的時(shí)候,第一個(gè)調(diào)用執(zhí)行的是__new__()方法,當(dāng)定義的類(lèi)中沒(méi)有重新定義__new__()方法時(shí)候,Python會(huì)默認(rèn)調(diào)用該父類(lèi)的__new__()方法來(lái)構(gòu)造該實(shí)例,new方法就是先創(chuàng)建一個(gè)空間,然后每次創(chuàng)建一個(gè)實(shí)例化的對(duì)象,然后用開(kāi)辟的空間存放這個(gè)實(shí)例化對(duì)象; 再次創(chuàng)建一個(gè)實(shí)例化的對(duì)象的時(shí)候,再用new方法開(kāi)辟一個(gè)空間存放實(shí)例化對(duì)象。注意只有繼承了object的類(lèi)才有此方法。

2、內(nèi)存地址和對(duì)象可相互轉(zhuǎn)換

#通過(guò)_ctypes的api進(jìn)行對(duì)內(nèi)存地址的對(duì)象
import?_ctypes
obj?=?_ctypes.PyObj_FromPtr(id(a))
#打印出來(lái)通過(guò)內(nèi)存地址尋找到的對(duì)象
print(obj)

print(id(a))與 print(id(b))打印出來(lái)的都是內(nèi)存地址(10進(jìn)制),print(a)與 print(b)返回了類(lèi)的名稱(chēng)和對(duì)象的地址,但是兩者并不相同。每次實(shí)例化類(lèi)都會(huì)創(chuàng)建分配不同的對(duì)象地址,因此,代碼實(shí)例化類(lèi)過(guò)程中返回類(lèi)對(duì)象的地址引用也就不同。

2、初始化數(shù)據(jù)加載重寫(xiě)new方法+解析類(lèi)實(shí)例

class?Solution:
????"""
????注:new方法是為實(shí)例化對(duì)象創(chuàng)建空間的方法,現(xiàn)在new方法被改寫(xiě),沒(méi)有將實(shí)例化對(duì)象引用返回給python的解釋器
????無(wú)法為實(shí)例化對(duì)象創(chuàng)建空間存儲(chǔ),所以運(yùn)行代碼會(huì)報(bào)錯(cuò)。也沒(méi)有完成初始化操作。
????"""

????def?__new__(cls,?*args,?**kwargs):
????????print("對(duì)象創(chuàng)建空間")
????????cls.instance?=?super().__new__(cls)
????????print(cls.instance)
????????# return cls.instance ??#若未返回實(shí)例對(duì)象引用,實(shí)例化方法將報(bào)錯(cuò):AttributeError:?'NoneType' object has no attribute 'Parser'

????def?__init__(self,name,data):
????????self.name?=?name
????????self.data?=?data
????????self.xml_load(self.data)

????def?xml_load(self,data):
????????print("初始化init",?data)

????def?Parser(self):
????????print("解析完成finish",self.data)

a?=?Solution("A111",10)
a.Parser()
print(id(a))

注:

1、__init__()方法和__new__()方法區(qū)別

__new__()方法用于創(chuàng)建實(shí)例,類(lèi)實(shí)例化之前會(huì)首先調(diào)用,它是class的方法,是個(gè)靜態(tài)方法。而__init__()方法用戶初始化實(shí)例,該方法用在實(shí)例對(duì)象創(chuàng)建后被調(diào)用,它是實(shí)例對(duì)象的方法,用于設(shè)置類(lèi)實(shí)例對(duì)象的一些初始值。

如果類(lèi)中同時(shí)出現(xiàn)了__init__()方法和__new__()方法,則先調(diào)用__new__()方法后調(diào)用__init__()方法。__new__()方法是創(chuàng)建實(shí)例的第一步,執(zhí)行完了需要返回創(chuàng)建的類(lèi)的實(shí)例,否則則報(bào)錯(cuò),無(wú)法執(zhí)行__init__()方法。其中,__init__()方法將不返回任何信息。

2、重寫(xiě)__new__()方法

def?__new__(cls,?*args,?**kwargs):
????print(cls)??#?cls?代表的是Solution這個(gè)類(lèi)本身<class'__?main?__.Solution'>
????cls.instance?=?super().__new__(cls)??#?object().__?new?__()
????print(cls.instance)
????return?cls.instance

super()與object.__new__(cls)都是在調(diào)用父類(lèi)的new方法,必須把父類(lèi)的new方法返回給函數(shù),才能開(kāi)辟空間,因此必須添加return。代碼的執(zhí)行順序是:先執(zhí)行new方法,然后執(zhí)行init方法,最后是其它方法。

二、單例模式

單例模式最初的定義出現(xiàn)于《設(shè)計(jì)模式》:“保證一個(gè)類(lèi)僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。”

單例的使用主要是在需要保證全局只有一個(gè)實(shí)例可以被訪問(wèn)的情況,比如系統(tǒng)日志的輸出、操作系統(tǒng)的任務(wù)管理器等。

1、用new方法如何實(shí)現(xiàn)單例模式

class?Solution:
????#?1、記錄第一個(gè)被創(chuàng)建對(duì)象的引用,代表著類(lèi)的私有屬性
????_instance?=?None?#?靜態(tài)變量?存儲(chǔ)在類(lèi)的命名空間里的

????def?__init__(self,name,data):
????????self.name?=?name
????????self.data?=?data
????????self.xml_load(self.data)

????def?__new__(cls,?*args,?**kwargs):
????????# 2.判斷該類(lèi)的屬性是否為空;對(duì)第一個(gè)對(duì)象沒(méi)有被創(chuàng)建,我們應(yīng)該調(diào)用父類(lèi)的方法,為第一個(gè)對(duì)象分配空間
????????if?cls._instance?==?None:??
????????????#?3.把類(lèi)屬性中保存的對(duì)象引用返回給python的解釋器
????????????cls._instance?=?object.__new__(cls)??#?3
????????????return?cls._instance
????????#?如果cls._instance不為None,直接返回已經(jīng)實(shí)例化了的實(shí)例對(duì)象
????????else:
????????????return?cls._instance??#?必須把地址返回給new方法,讓它有存儲(chǔ)空間

????def?xml_load(self,data):
????????print("初始化init",self.name,data)

????def?Parser(self):
????????print("解析完成finish",self.name)

a?=?Solution("A11",10)??#第一次開(kāi)辟一個(gè)對(duì)象空間地址,后面創(chuàng)建都是在該地址上進(jìn)行的
a.Parser()
b?=?Solution("A12",20)??#b把a(bǔ)覆蓋掉
b.Parser()
print(id(a))
print(id(b))
#?內(nèi)存地址,而且它們的內(nèi)存地址都是一樣的
print(a.name)
print(b.name)

輸出

初始化init A11 10
解析完成finish A11
初始化init A12 10
解析完成finish A12
2465140199816
2465140199816
A12
A12 

注:

1、單例模式始終只有一個(gè)空間,該空間一直重復(fù)利用。

首先定義一個(gè)類(lèi)的私有屬性_instance,用來(lái)記錄第一個(gè)被創(chuàng)建對(duì)象的引用,如果cls._instance為None說(shuō)明該類(lèi)還沒(méi)有實(shí)例化過(guò),則實(shí)例化該類(lèi)并返回實(shí)例對(duì)象。

通過(guò)以下數(shù)據(jù)測(cè)試可知,print(obj.name, obj.data)最后打印出來(lái)的都是A12,第一次打印"A11"時(shí),屬性為空,執(zhí)行if語(yǔ)句開(kāi)辟了一個(gè)空間存放該屬性;從 第二次打已經(jīng)開(kāi)辟了空間 ,執(zhí)行else語(yǔ)句,直接返回"A12"到原來(lái)的空間中,把前面的蓋數(shù)據(jù)覆蓋掉。

def?task(id,data):
????obj?=?Solution("{0}".format(id),?"{0}".format(data))
????print(obj.name,?obj.data)

import?threading
ID=["A11","A12","A13","A14","A12"]
DATA=[10,20,30,40,20]
for?i?in?range(5):
????t?=?threading.Thread(target=task(ID[i],DATA[i]),?args=[i,?])
????t.start()

輸出

<__main__.Solution object at 0x00000221B2129148>
初始化init A11 10
A11 10
初始化init A12 20
A12 20
初始化init A13 30
A13 30
初始化init A14 40
A14 40
初始化init A12 20
A12 20

2、單例模式另外一種實(shí)現(xiàn)方法 

def?__new__(cls,*args,**kwargs):
????#?hasattr查詢(xún)目標(biāo)并判斷有沒(méi)有,not??1==1??返回的是False
????#?if語(yǔ)句后面的
????#?not?條件整體為T(mén)rue時(shí),執(zhí)行cls.instance?=?object....代碼

????#?if語(yǔ)句后面的
????#?not?條件整體為False時(shí),執(zhí)行return代碼
????if?not?hasattr(cls,"instance"):?????#?hasattr查、判斷的作用
????????cls.instance?=?object.__new__(cls)
????return?cls.instance

2、如何控制類(lèi)僅執(zhí)行一次初始化方法

以上實(shí)現(xiàn)了單例模式對(duì)象空間的重復(fù)利用,但是有時(shí)候我們想初始化過(guò)程只加載一次,避免頻繁請(qǐng)求浪費(fèi)系統(tǒng)資源(如數(shù)據(jù)庫(kù)連接請(qǐng)求數(shù)據(jù))。

class?Solution:
????#定義類(lèi)變量
????#?記錄第一個(gè)被創(chuàng)建對(duì)象的引用,代表著類(lèi)的私有屬性
????_instance?=?None
????#記錄是否執(zhí)行過(guò)初始化動(dòng)作
????init_flag?=?False

????def?__init__(self,name,data):
????????self.name?=?name
????????self.data?=?data
????????#使用類(lèi)名調(diào)用類(lèi)變量,不能直接訪問(wèn)。
????????if?Solution.init_flag:
????????????return
????????self.xml_load(self.data)
????????#?修改類(lèi)屬性的標(biāo)記
????????Solution.init_flag?=?True

????def?__new__(cls,?*args,?**kwargs):
????????#?判斷該類(lèi)的屬性是否為空;對(duì)第一個(gè)對(duì)象沒(méi)有被創(chuàng)建,我們應(yīng)該調(diào)用父類(lèi)的方法,為第一個(gè)對(duì)象分配空間
????????if?cls._instance?==?None:?
????????????#?把類(lèi)屬性中保存的對(duì)象引用返回給python的解釋器
????????????cls._instance?=?object.__new__(cls)??
????????????return?cls._instance
????????#如果cls._instance不為None,直接返回已經(jīng)實(shí)例化了的實(shí)例對(duì)象
????????else:
????????????return?cls._instance?

????def?xml_load(self,data):
????????print("初始化init",self.name,data)

????def?Parser(self):
????????print("解析完成finish",self.name)

a?=?Solution("A11",10)??#第一次實(shí)例化對(duì)象地址,后面創(chuàng)建都是在該地址上進(jìn)行的
a.Parser()
b?=?Solution("A12",20)??#b把a(bǔ)覆蓋掉
b.Parser()
print(id(a))
print(id(b))
print(a.name)
print(b.name)

輸出

初始化init A11 10
解析完成finish A11
解析完成finish A12
2280855720328
2280855720328
A12
A12 

注:

1、單例模式下僅加載一次初始化過(guò)程。

這時(shí)候我們?cè)陬?lèi)空間中再添加一個(gè)init_flag屬性來(lái)記錄是否已經(jīng)執(zhí)行過(guò)初始化操作即可實(shí)現(xiàn)加載一次初始化過(guò)程。從以上兩次實(shí)例化過(guò)程結(jié)果來(lái)看,對(duì)象引用地址不變,結(jié)果被最后一次實(shí)例化數(shù)據(jù)覆蓋且初始化init只被打印一次。

2、單例模式下一次資源加載注意點(diǎn)

單例模式下控制類(lèi)僅進(jìn)行一次初始化過(guò)程適用于資源一次性加載進(jìn)緩存的過(guò)程,對(duì)于多進(jìn)程應(yīng)用可采用多例模式實(shí)現(xiàn)。

三、多例模式

多個(gè)實(shí)例對(duì)象空間引用地址完全獨(dú)立,從而保持避免不同請(qǐng)求資源不被占用。將同一個(gè)對(duì)象請(qǐng)求歸為同一個(gè)實(shí)例。

class?Solution:
????##定義類(lèi)實(shí)例化對(duì)象字典,即不同的實(shí)例對(duì)象對(duì)應(yīng)不同的對(duì)象空間地址引用
????_loaded?=?{}

????def?__init__(self,name,data):
????????self.name?=?name
????????self.data?=?data
????????self.xml_load(self.data)

????def?__new__(cls,?name,*args):
????????if?cls._loaded.get(name)?is?not?None:
????????????client?=?cls._loaded.get(name)
????????????print(f"已經(jīng)存在訪問(wèn)對(duì)象?{name}")
????????????print(client)
????????????return?client
????????#?把類(lèi)屬性中保存的對(duì)象引用返回給python的解釋器
????????print(f"正在創(chuàng)建訪問(wèn)對(duì)象?{name}")
????????client?=?super().__new__(cls)
????????#?為該類(lèi)實(shí)例name添加一個(gè)空間對(duì)象地址引用
????????print(client)????
????????cls._loaded[name]?=?client
????????return?client

????def?xml_load(self,data):
????????print("初始化init",self.name,data)

????def?Parser(self):
????????print("解析完成finish",self.name)

if?__name__?==?'__main__':
????print("多例模式實(shí)例")
????a?=?Solution("A11",10)
????a.Parser()
????b?=?Solution("A11",10)
????b.Parser()
????c?=?Solution("A12",?20)
????c.Parser()
????print(f"{a?is?b}")
????print(a.name)
????print(b.name)
????print(c.name)

注:

1、多例模式始終具有多個(gè)空間,不同空間完全獨(dú)立。

我們?cè)陬?lèi)空間中定義類(lèi)實(shí)例化對(duì)象字典,即建立不同的實(shí)例對(duì)象和對(duì)象空間地址引用鍵值對(duì),從而實(shí)現(xiàn)多例模式。通過(guò)類(lèi)字典判斷實(shí)例對(duì)象是否創(chuàng)建,節(jié)省創(chuàng)建的成本。

2、多例模式測(cè)試過(guò)程

當(dāng)創(chuàng)建相同的實(shí)例對(duì)象name="A11"時(shí),程序首先在實(shí)例池中搜索cls._loaded.get(name),若存在則直接返回已創(chuàng)建的實(shí)例對(duì)象空間。多例模式完美的實(shí)現(xiàn)了不同訪問(wèn)對(duì)象具體不同的實(shí)例化對(duì)象地址。

3、多例模式下緩沖機(jī)制的實(shí)現(xiàn)

進(jìn)一步優(yōu)化多例模式初始化過(guò)程,比如讀取文件或者數(shù)據(jù)庫(kù)時(shí)僅進(jìn)行一次初始化加載。

class?Solution:
????##定義類(lèi)實(shí)例化對(duì)象字典,即不同的實(shí)例對(duì)象對(duì)應(yīng)不同的對(duì)象空間地址引用
????_loaded?=?{}

????def?__new__(cls,?name,data,*args):
????????if?cls._loaded.get(name)?is?not?None:
????????????client?=?cls._loaded.get(name)
????????????print(f"已經(jīng)存在訪問(wèn)對(duì)象?{name}")
????????????print(client)
????????????return?client
????????print(f"正在創(chuàng)建訪問(wèn)對(duì)象?{name}")
????????#?把類(lèi)屬性中保存的對(duì)象引用返回給python的解釋器
????????client?=?super().__new__(cls)
????????print(client)
????????#?為該類(lèi)實(shí)例name添加一個(gè)空間對(duì)象地址引用
????????cls._loaded[name]?=?client
????????client._init_db(name,data)
????????return?client

????def?_init_db(self,name,data):
????????self.name?=?name
????????self.data?=?data
????????self.xml_load(self.data)

????def?xml_load(self,data):
????????print("初始化init",self.name,data)

????def?Parser(self):
????????print("解析完成finish",self.name)

if?__name__?==?'__main__':
????print("多例模式實(shí)例-緩存")
????a?=?Solution("A11",10)
????a.Parser()
????b?=?Solution("A11",10)
????b.Parser()
????c?=?Solution("A12",?20)
????c.Parser()
????print(f"{a?is?b}")
????print(a.name)
????print(b.name)
????print(c.name)

輸出

正在創(chuàng)建訪問(wèn)對(duì)象 A11
<__main__.Solution object at 0x0000024198989148>
初始化init A11 10
解析完成finish A11
已經(jīng)存在訪問(wèn)對(duì)象 A11
<__main__.Solution object at 0x0000024198989148>
解析完成finish A11
正在創(chuàng)建訪問(wèn)對(duì)象 A12
<__main__.Solution object at 0x00000241989891C8>
初始化init A12 20
解析完成finish A12
True
A11
A11
A12

注:多例模式下多個(gè)實(shí)例化對(duì)象均只進(jìn)行一次初始化過(guò)程。

重寫(xiě)__new__方法中每個(gè)實(shí)例對(duì)象創(chuàng)建后綁定初始化_init_db()方法執(zhí)行一次,后面遇到同一個(gè)實(shí)例對(duì)象將不會(huì)發(fā)生什么,直接返回已創(chuàng)建的實(shí)例對(duì)象。從測(cè)試結(jié)果來(lái)看,創(chuàng)建相同的實(shí)例對(duì)象name="A11"時(shí),第二次將略過(guò)初始化數(shù)據(jù)加載過(guò)程,很好的實(shí)現(xiàn)了緩存機(jī)制。

總結(jié)

本文結(jié)合項(xiàng)目背景詳細(xì)介紹了__new__方法實(shí)現(xiàn)單例模式和多例模式以及緩存機(jī)制的實(shí)現(xiàn)!

1、__new__ 方法是在類(lèi)創(chuàng)建實(shí)例的時(shí)候自動(dòng)調(diào)用的。

2、 實(shí)例是通過(guò)類(lèi)里面的 __ new __ 方法是在類(lèi)創(chuàng)建出來(lái)的。

3、 先調(diào)用__new__ 方法創(chuàng)建實(shí)例,再調(diào)用 __ init __方法初始化實(shí)例。

4、 __new__ 方法,后面的括號(hào)里面的cls代表的是類(lèi)本身。

5、__new__ 方法,判斷類(lèi)屬性為空就去開(kāi)辟空間,否則復(fù)用原來(lái)的地址。

更多的特殊方法比如1、自我描述方法:__repr__2、析構(gòu)方法:__del__ 3、列出對(duì)象所有屬性(包括方法)名:__dir__4、__dict__屬性:查看對(duì)象內(nèi)部所有屬性名和屬性值組成的字典5、__getattr__\__setattr__等。

當(dāng)然還有metaclass類(lèi)的__new__方法,可以動(dòng)態(tài)修改程序中的一批類(lèi),這個(gè)功能在開(kāi)發(fā)一些基礎(chǔ)性的框架時(shí)非常有用,可以使用metaclass為某一批需要通用功能的類(lèi)添加方法。

以上就是詳解Python中__new__方法的作用的詳細(xì)內(nèi)容,更多關(guān)于Python __new__的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中在for循環(huán)中嵌套使用if和else語(yǔ)句的技巧

    Python中在for循環(huán)中嵌套使用if和else語(yǔ)句的技巧

    Python的語(yǔ)法糖非常強(qiáng)大,比如Python中在for循環(huán)中嵌套使用if和else語(yǔ)句的技巧便十分給力,下面我們就舉幾個(gè)例子來(lái)看詳細(xì)的用法:
    2016-06-06
  • Python中8種運(yùn)算符介紹以及示例

    Python中8種運(yùn)算符介紹以及示例

    在Python編程中運(yùn)算符是用于執(zhí)行各種操作的特殊符號(hào)或關(guān)鍵字,下面這篇文章主要給大家介紹了關(guān)于Python中8種運(yùn)算符介紹以及示例的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • Python繪制牛奶凍曲線(高木曲線)案例

    Python繪制牛奶凍曲線(高木曲線)案例

    這篇文章主要介紹了Python繪制牛奶凍曲線(高木曲線)案例,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • python將類(lèi)似json的數(shù)據(jù)存儲(chǔ)到MySQL中的實(shí)例

    python將類(lèi)似json的數(shù)據(jù)存儲(chǔ)到MySQL中的實(shí)例

    今天小編就為大家分享一篇python將類(lèi)似json的數(shù)據(jù)存儲(chǔ)到MySQL中的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Python建立Map寫(xiě)Excel表實(shí)例解析

    Python建立Map寫(xiě)Excel表實(shí)例解析

    這篇文章主要介紹了Python建立Map寫(xiě)Excel表實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • python xlsxwriter庫(kù)生成圖表的應(yīng)用示例

    python xlsxwriter庫(kù)生成圖表的應(yīng)用示例

    這篇文章主要介紹了python xlsxwriter庫(kù)生成圖表的應(yīng)用示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • python單向循環(huán)鏈表實(shí)例詳解

    python單向循環(huán)鏈表實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了python單向循環(huán)鏈表實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • python實(shí)現(xiàn)打磚塊游戲

    python實(shí)現(xiàn)打磚塊游戲

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)打磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 利用Python實(shí)現(xiàn)網(wǎng)絡(luò)測(cè)試的腳本分享

    利用Python實(shí)現(xiàn)網(wǎng)絡(luò)測(cè)試的腳本分享

    這篇文章主要給大家介紹了關(guān)于利用Python實(shí)現(xiàn)網(wǎng)絡(luò)測(cè)試的方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • 關(guān)于Python中flask-httpauth庫(kù)用法詳解

    關(guān)于Python中flask-httpauth庫(kù)用法詳解

    這篇文章主要介紹了關(guān)于Python中flask-httpauth庫(kù)用法詳解,Flask-HTTPAuth是一個(gè)?Flask?擴(kuò)展,它簡(jiǎn)化了?HTTP?身份驗(yàn)證與?Flask?路由的使用,需要的朋友可以參考下
    2023-04-04

最新評(píng)論