創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
目前創(chuàng)新互聯(lián)公司已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計、黃州網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。這篇文章主要介紹Python中函數(shù)的參數(shù)是什么,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
如果有人問起 Python 程序員他們最喜歡 Python 哪一點,他們一定會提到 Python 的高可讀性。確實,對于 Python 來說,其高可讀性一直是 Python 這門語言設(shè)計的核心。一個不爭的事實是,相對于寫代碼而言,讀代碼才是更加平常的事情。
Python 代碼有高可讀性的一個原因就是其有著相對而言更加完善的編碼風(fēng)格準(zhǔn)則和 「Python 化」習(xí)語。
當(dāng) Python 老手(Pythonista)認(rèn)為一段代碼不「Python 化」,他們通常的意思是這段代碼沒有遵循一般準(zhǔn)則,同時亦沒有以最佳的(最具可讀性的)方式表達(dá)出代碼的意圖。
在一些極端的情況下,沒有公認(rèn)最佳的方式來表達(dá) Python 代碼的意圖,不過這種極端情況非常罕見。
一般概念
明確代碼意義
盡管 Python 可以寫出從各種意義上來說都像是黑魔法的代碼,但最簡單直白的表達(dá)才是正道。
不好
def make_complex(*args): x, y = args return dict(**locals())
好
def make_complex(x, y): return {'x': x, 'y': y}
在上述好的代碼中,x 和 y 清晰明了的從參數(shù)中獲取值,并清晰明了的返回了一個字典。當(dāng)開發(fā)者看到這個函數(shù)后就可以明了這個函數(shù)的用途,而不好的代碼則不行。
一行一個聲明語句
雖然在 Python 中我們推崇使用形如列表生成式這種簡潔明了的復(fù)合語句,但是除此以外,我們應(yīng)該盡量避免將兩句獨立分割的代碼寫在同一行。
不好的風(fēng)格
print 'one'; print 'two' if x == 1: print 'one' if <complex comparison> and <other complex comparison>: # do something
好的風(fēng)格
print 'one' print 'two' if x == 1: print 'one' cond1 = <complex comparison> cond2 = <other complex comparison> if cond1 and cond2: # do something
函數(shù)的參數(shù)
函數(shù)的參數(shù)可以使用四種不同的方式傳遞給函數(shù)。
必選參數(shù) 是沒有默認(rèn)值的必填的參數(shù)。 必選參數(shù)是最簡單的參數(shù)構(gòu)成,用于參數(shù)較少的函數(shù)的構(gòu)成,是該函數(shù)意義的一部分,使用他們的順序是按照定義自然排序的。舉個例子,對于 send(message, recipient) 和 point(x, y) 這兩個函數(shù),使用函數(shù)的人需要知道這個函數(shù)需要兩個參數(shù),并且記住兩個參數(shù)的順序。
在調(diào)用函數(shù)的時候,我們也可以使用參數(shù)的名稱調(diào)用。使用參數(shù)的名稱的方式可以調(diào)換參數(shù)的順序,就像 send(recipient='World',message='Hello') 和 point(y=2, x=1) 這樣。但這樣的做法會降低代碼的可讀性,并且使代碼冗長,因此更建議使用 send('Hello', 'World') 和 point(1,2) 這樣的方式調(diào)用。
關(guān)鍵字參數(shù) 是非強(qiáng)制的,且有默認(rèn)值。它們經(jīng)常被用在傳遞給函數(shù)的可選參數(shù)中。 當(dāng)一個函數(shù)有超過兩個或三個位置參數(shù)時,函數(shù)簽名會變得難以記憶,使用帶有默認(rèn)參數(shù)的關(guān)鍵字參數(shù)有時候會給你帶來便利。比如,一個更完整的 send 函數(shù)可以被定義為 send(message, to, cc=None, bcc=None)。這里的 cc 和 bcc 是可選的, 當(dāng)沒有傳遞給它們其他值的時候,它們的值就是 None。
Python 中有多種方式調(diào)用帶關(guān)鍵字參數(shù)的函數(shù)。比如說,我們可以按照定義時的參數(shù)順序而無需明確的命名參數(shù)來調(diào)用函數(shù),就像 send('Hello', 'World', 'Cthulhu', 'God') 是將密件發(fā)送給上帝。我們也可以使用命名參數(shù)而無需遵循參數(shù)順序來調(diào)用函數(shù),就像 send('Hello again', 'World', bcc='God', cc='Cthulhu') 。沒有特殊情況的話,這兩種方式都需要盡力避免,最優(yōu)的調(diào)用方式是與定義方式一致:send('Hello', 'World', cc='Cthulhu',bcc='God') 。
任意參數(shù)列表 是第三種給函數(shù)傳參的方式。如果函數(shù)的參數(shù)數(shù)量是動態(tài)的,該函數(shù)可以被定義成 *args 的結(jié)構(gòu)。在這個函數(shù)體中, args 是一個元組,它包含所有剩余的位置參數(shù)。舉個例子, 我們可以用任何容器作為參數(shù)去調(diào)用 send(message, *args) ,比如 send('Hello', 'God', 'Mom','Cthulhu')。 在此函數(shù)體中, args 相當(dāng)于 ('God','Mom', 'Cthulhu')。
然而,這種結(jié)構(gòu)有一些缺點,使用時應(yīng)該特別注意。如果一個函數(shù)接受的參數(shù)列表具有相同的性質(zhì),通常把它定義成一個參數(shù),這個參數(shù)是一個列表或者其他任何序列會更清晰。 在這里,如果 send 參數(shù)有多個容器(recipients),將之定義成 send(message,recipients) 會更明確,調(diào)用它時就使用 send('Hello', ['God', 'Mom', 'Cthulhu'])。這樣的話, 函數(shù)的使用者可以事先將容器列表維護(hù)成列表(list)形式,這為傳遞各種不能被轉(zhuǎn)變成其他序列的序列(包括迭代器)帶來了可能。
任意關(guān)鍵字參數(shù)字典 是最后一種給函數(shù)傳參的方式。如果函數(shù)要求一系列待定的命名參數(shù),我們可以使用 **kwargs 的結(jié)構(gòu)。在函數(shù)體中, kwargs 是一個字典,它包含所有傳遞給函數(shù)但沒有被其他關(guān)鍵字參數(shù)捕捉的命名參數(shù)。
和 任意參數(shù)列表 中所需注意的一樣,相似的原因是:這些強(qiáng)大的技術(shù)在非特殊情況下,都要盡量避免使用,因為其缺乏簡單和明確的結(jié)構(gòu)來足夠表達(dá)函數(shù)意圖。
編寫函數(shù)的時候采用何種參數(shù)形式,是用位置參數(shù),還是可選關(guān)鍵字參數(shù),是否使用形如任意參數(shù) 的高級技術(shù),這些都由程序員自己決定。如果能明智地遵循上述建議,即可輕松寫出這樣的 Python 函數(shù):
易讀(名字和參數(shù)無需解釋)
易改(添加新的關(guān)鍵字參數(shù)不會破壞代碼的其他部分)
避免魔法方法
Python 對駭客來說是一個強(qiáng)有力的工具,它擁有非常豐富的鉤子(hook)和工具,允許你施展幾乎任何形式的技巧。比如說,它能夠做以下:
改變對象創(chuàng)建和實例化的方式;
改變 Python 解釋器導(dǎo)入模塊的方式;
甚至可能(如果需要的話也是被推薦的)在 Python 中嵌入 C 程序。
盡管如此,所有的這些選擇都有許多缺點。使用最直接的方式來達(dá)成目標(biāo)通常是最好的方法。它們最主要的缺點是可讀性不高。許多代碼分析工具,比如說 pylint 或者 pyflakes,將無法解析這種『魔法』代碼。
我們認(rèn)為 Python 開發(fā)者應(yīng)該知道這些近乎無限的可能性,因為它為我們灌輸了沒有不可能完成的任務(wù)的信心。然而,知道何時 不能 使用它們也是非常重要的。
以上是Python中函數(shù)的參數(shù)是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
網(wǎng)頁題目:Python中函數(shù)的參數(shù)是什么-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://jinyejixie.com/article20/csdgco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、Google、企業(yè)網(wǎng)站制作、響應(yīng)式網(wǎng)站、網(wǎng)站制作、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容