日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)Python教程:python3類(lèi)比函數(shù)好用嗎?該如何選擇?

python中的函數(shù)數(shù)不勝數(shù),是我們學(xué)習(xí)python重要的模塊之一。類(lèi)作為python的另一個(gè)模塊,與函數(shù)相比絲毫不遜色。兩者平分春秋,具體選擇哪個(gè)還是要看各位小伙伴們的使用。為了讓大家體會(huì)兩者用法的不同,小編特意找了一個(gè)例子,讓大家在對(duì)比中選擇更合適的用法。下面我們一起看看示例吧。

在金水等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需求定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)整合營(yíng)銷(xiāo)推廣,外貿(mào)網(wǎng)站建設(shè),金水網(wǎng)站建設(shè)費(fèi)用合理。


假設(shè)我們需要編寫(xiě)一個(gè)音樂(lè)播放器。在這個(gè)播放器中,我們有關(guān)于不同類(lèi)型數(shù)據(jù)的信息,如歌曲、專(zhuān)輯、藝術(shù)家和播放列表。還有一些可以播放歌曲、播放專(zhuān)輯、播放藝術(shù)家或播放播放列表的功能。我們將每種數(shù)據(jù)存儲(chǔ)在字典中,不同類(lèi)型的數(shù)據(jù)有不同的字段名,因?yàn)槊總€(gè)play函數(shù)需要做不同的事情,所以我們就有四個(gè)不同的函數(shù):

 some_song = {
    "title": "Yellow Submarine",
    "artist": the_beatles, # 指向到包含該藝術(shù)家的詞典
    "album": yellow_submarine_album, # 指向包含此相冊(cè)的dict的鏈接
    "duration": insert_time_object_here,
    "filepath": "path/to/file/on/disk"
}
 
# 其他數(shù)據(jù)類(lèi)型的結(jié)構(gòu)也類(lèi)似
 
# 一些函數(shù)
def play_song(song):
    # 獲取歌的路徑
    path = song["filepath"]
    # 播放路徑
    call_some_library_function(path)
 
def play_album(album):
    # 找到專(zhuān)輯里所有的歌曲
    # 分別調(diào)用play_song
 
def play_artist(artist):
    # 找到這位藝術(shù)家所有的專(zhuān)輯
    # 分別調(diào)用play_album
 
def play_playlist(playlist):
    # 找到播放列表中的所有歌曲
# 分別調(diào)用play_song

 這樣寫(xiě)有什么不好?我們有四個(gè)非常相似的函數(shù),每個(gè)函數(shù)都與特定類(lèi)型的數(shù)據(jù)相關(guān)。你必須把它們叫做不同的東西,而不僅僅是play,你必須確保你把正確的數(shù)據(jù)傳遞給它們。雖然這四種不同的類(lèi)型都可以“播放”,但是沒(méi)有一種通用的方法可以在不知道它是什么的情況下播放任何東西。那么在OOP下,怎么實(shí)現(xiàn)呢:

class Song:
    def __init__(self, title, artist, album, duration, filepath):
        self.title = title
        self.artist = artist
        self.album = album
        self.duration = duration
        self.filepath = filepath
 
    def play(self):
        path = self.filepath
        call_some_library_function(path)

這樣就定義了如何創(chuàng)建一個(gè)新的Song對(duì)象。該方法將字段值作為參數(shù),并將它們作為對(duì)象的屬性賦值。self是一個(gè)特殊參數(shù)(名稱(chēng)不保留;它可以被稱(chēng)為任何東西),它是對(duì)對(duì)象本身的引用。是一種從同一對(duì)象的其他方法內(nèi)部訪問(wèn)屬性和方法的方法。當(dāng)我們從對(duì)象外部訪問(wèn)它們時(shí)(要使用play方法時(shí)將執(zhí)行此操作),則可以使用在該范圍內(nèi)為對(duì)象指定的任何名稱(chēng)。

 那么在之前:

# some_song是上面定義的歌
play_song(some_song)
在使用class之后:
# self參數(shù)沒(méi)有在這里傳遞;它會(huì)自動(dòng)添加
some_song = Song("Yellow Submarine",
                the_beatles,
                yellow_submarine_album,
                insert_time_object_here,
                "path/to/file/on/disk"
            )
some_song.play()

為什么這樣更好?如果我們有一個(gè)對(duì)象,則不必知道它是什么就可以播放,因?yàn)楝F(xiàn)在播放任何內(nèi)容的語(yǔ)法都是相同的:anyobject.play()即對(duì)象“知道”如何使用“自己的”數(shù)據(jù)進(jìn)行處理的設(shè)計(jì)思想。無(wú)需從外部檢查對(duì)象是否具有某些字段并決定如何處理這些內(nèi)部字段,而是調(diào)用play對(duì)象提供的方法,并在每個(gè)類(lèi)內(nèi)部定義該類(lèi)型的對(duì)象應(yīng)如何實(shí)現(xiàn)此功能。

以上就是類(lèi)跟函數(shù)的使用對(duì)比,有的小伙伴們肯定說(shuō)小編偏向于類(lèi)了。其實(shí)這只是一個(gè)應(yīng)用場(chǎng)景的選擇,大家也不用糾結(jié)于這一點(diǎn),選擇合適的使用才是最重要的。


分享題目:創(chuàng)新互聯(lián)Python教程:python3類(lèi)比函數(shù)好用嗎?該如何選擇?
瀏覽路徑:http://www.5511xx.com/article/cdeiisi.html