摘要:默認(rèn)參數(shù)我們?nèi)砸跃唧w的例子來說明如何定義函數(shù)的默認(rèn)參數(shù)。從上面的例子可以看出,默認(rèn)參數(shù)可以簡(jiǎn)化函數(shù)的調(diào)用。
Python 函數(shù)
大家好,這一期讓我們來看看Python中比較核心的知識(shí)點(diǎn):函數(shù)(也叫方法),那么到底什么是一個(gè)函數(shù)呢?先讓我引入一個(gè)官方一點(diǎn)的定義:
函數(shù)是對(duì)程序邏輯進(jìn)行結(jié)構(gòu)化或者過程化的一種編程方法。是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。
好啦,我知道這說的不是人話,其實(shí)簡(jiǎn)單理解就是: 如果我們有一些代碼可以執(zhí)行一些功能,比如有100行,我們可以把這些代碼打包叫做A,那么A就是一個(gè)函數(shù),下次我們想要執(zhí)行一樣的功能,不用重新寫100行,直接調(diào)用A就可以了。在接下來的介紹中讓我們看看實(shí)際例子
內(nèi)置函數(shù),調(diào)用函數(shù)首先,Python內(nèi)置了很多有用的函數(shù),我們可以直接調(diào)用。不需要?jiǎng)?chuàng)建。而要調(diào)用一個(gè)函數(shù),需要知道函數(shù)的名稱和參數(shù),比如求絕對(duì)值的函數(shù)abs
abs(-500) Out:500
很簡(jiǎn)單吧,只要直接調(diào)用函數(shù)名和函數(shù)需要的參數(shù)即可,再看一些其他的內(nèi)置函數(shù)的例子:
type("Hello") #max(10,20,30,45) # 45 len("Hello world") # 11
大家看到常用的type函數(shù)了吧~,還有很多都是非常好用的內(nèi)置函數(shù),大家可以自己谷歌百度一下,在實(shí)際編程中非常有效,不過要注意一點(diǎn),如果參數(shù)傳遞錯(cuò)誤,那就會(huì)出錯(cuò):
abs(1, 5) TypeError: abs() takes exactly one argument (2 given)
這里很好理解,abs這個(gè)內(nèi)置方法只接受1個(gè)參數(shù),這里傳遞了兩個(gè)所以就報(bào)錯(cuò)了。
如何定義一個(gè)函數(shù)我們可以自己創(chuàng)建函數(shù),創(chuàng)建一個(gè)函數(shù)很簡(jiǎn)單,利用關(guān)鍵字def就可以, 之后依次寫出函數(shù)名、括號(hào)、括號(hào)中的參數(shù)和冒號(hào),最后在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用return語句返回。當(dāng)然,如果不需要返回結(jié)果值,也可以不加return。我們以自定義一個(gè)求絕對(duì)值的my_abs函數(shù)為例:
def my_abs(x): if x >= 0: return x else: return -x
這里大家就可以發(fā)現(xiàn),我們之前所學(xué)到的邏輯條件排上了用場(chǎng),這里我們根據(jù)絕對(duì)值的求法寫出了自己的函數(shù),如果是正數(shù)返回函數(shù)本身,如果是負(fù)數(shù),返回它的相反數(shù)。讓我們測(cè)試一下
my_abs(-200) Out:200
這里需要注意幾點(diǎn):函數(shù)體內(nèi)部的語句在執(zhí)行時(shí),一旦執(zhí)行到return時(shí),函數(shù)就執(zhí)行完畢,并將結(jié)果返回。因此,函數(shù)內(nèi)部通過條件判斷和循環(huán)可以實(shí)現(xiàn)非常復(fù)雜的邏輯。
如果沒有return語句,函數(shù)執(zhí)行完畢后也會(huì)返回結(jié)果,只是結(jié)果為None。
return None可以簡(jiǎn)寫為return`。
函數(shù)的參數(shù)定義函數(shù)的時(shí)候,我們把參數(shù)的名字和位置確定下來,函數(shù)的接口定義就完成了。對(duì)于函數(shù)的調(diào)用者來說,只需要知道如何傳遞正確的參數(shù),以及函數(shù)將返回什么樣的值就夠了,函數(shù)內(nèi)部的復(fù)雜邏輯被封裝起來,調(diào)用者無需了解。
Python的函數(shù)定義非常簡(jiǎn)單,但靈活度卻非常大。除了正常定義的必選參數(shù)外,還可以使用默認(rèn)參數(shù)、可變參數(shù)和關(guān)鍵字參數(shù),使得函數(shù)定義出來的接口,不但能處理復(fù)雜的參數(shù),還可以簡(jiǎn)化調(diào)用者的代碼。
默認(rèn)參數(shù)
我們?nèi)砸跃唧w的例子來說明如何定義函數(shù)的默認(rèn)參數(shù)。我們現(xiàn)在想寫一個(gè)求平方的函數(shù):
def power(x): return x * x
測(cè)試一下是否正確
power(5) Out:25
現(xiàn)在,如果我們要計(jì)算 x3x3 怎么辦?可以再定義一個(gè)power3函數(shù),但是如果要計(jì)算 x4x4 、 x5x5 ……怎么辦?我們不可能定義無限多個(gè)函數(shù)。你也許想到了,可以把 power(x) 修改為 power(x, n),用來計(jì)算 xn:
def power(x, n): s = 1 while n > 0: n = n - 1 s = s * x return s
對(duì)于這個(gè)修改后的 power 函數(shù),可以計(jì)算任意 n 次方:
power(2, 3) Out:8
但是,舊的調(diào)用代碼失敗了,原因是我們?cè)黾恿艘粋€(gè)參數(shù),導(dǎo)致舊的代碼無法正常調(diào)用:
power(9) TypeError: power() missing 1 required positional argument: "n"
這個(gè)時(shí)候,默認(rèn)參數(shù)就排上用場(chǎng)了。由于我們經(jīng)常計(jì)算 x2x2 ,所以,完全可以把第二個(gè)參數(shù) n 的默認(rèn)值設(shè)定為 2:
def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s
這樣,當(dāng)我們調(diào)用 power(5) 時(shí),相當(dāng)于調(diào)用 power(5, 2):
power(5) Out:25
而對(duì)于 n > 2 的其他情況,就必須明確地傳入 n,比如 power(5, 3)。從上面的例子可以看出,默認(rèn)參數(shù)可以簡(jiǎn)化函數(shù)的調(diào)用。設(shè)置默認(rèn)參數(shù)時(shí),有幾點(diǎn)要注意:
必選參數(shù)在前,默認(rèn)參數(shù)在后,否則Python的解釋器會(huì)報(bào)錯(cuò)(思考一下為什么默認(rèn)參數(shù)不能放在必選參數(shù)前面)
如何設(shè)置默認(rèn)參數(shù)
好啦,今天先為大家講到這里,有很多復(fù)雜的方法還要大家自己去探索,
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/43118.html
摘要:變量是什么大家好,我回來啦,今天想為大家介紹里面一個(gè)神奇的東西變量。 變量是什么 Hello, 大家好,我回來啦,今天想為大家介紹Python里面一個(gè)神奇的東西:變量。其實(shí)這個(gè)東西真正要非常詳細(xì)的解釋的話要將好多,因?yàn)樗辽侔韵聨追N類型: 全局變量 (在模塊內(nèi)、在所有函數(shù)外面、在class外面是全局變量) 局部變量 (在函數(shù)內(nèi)、在class的方法內(nèi),未加self修飾就是局部變...
摘要:好啦,那如果我現(xiàn)在想要改變中一個(gè)值也很簡(jiǎn)單,因?yàn)槲覀兞私饬怂饕隳芎芊奖愕亩ㄎ辉乩玻绻乙薷暮偷闹禐槿绻莿h除的話可以用的自帶函數(shù)叫或者注意兩點(diǎn)如果正確刪除,不會(huì)有任何反饋。沒有消息就是好消息如果所刪除的內(nèi)容不在中,就報(bào)錯(cuò)。 什么是List Hello,小白同胞們,我回來啦,前面的學(xué)習(xí)中,我們已經(jīng)知道了兩種python的數(shù)據(jù)類型:int和str,今天將要給大家接著介紹Pytho...
摘要:好啦,現(xiàn)在讓我們進(jìn)入主題,今天我主要想給大家說一下里的數(shù)據(jù)類型,用小白的話說就是能顯示或者使用什么類型的信息,是數(shù)字,字符串,分?jǐn)?shù)小數(shù)等等。 基礎(chǔ)數(shù)據(jù)類型 大家好,經(jīng)過上篇文章的講解,相信同為小白的你已經(jīng)熟悉了Jupyter Notebook 的基礎(chǔ)操作,在此為大家總結(jié)一些常用的快捷鍵,能夠方便大家使用: 在選中模塊下方添加一個(gè)新的模塊: b 在選中模塊上方添加一個(gè)新的模塊: a 刪...
摘要:,同為小白的朋友們大家好,這期主要為大家?guī)碛嘘P(guān)字典的一些實(shí)用技巧。上篇筆記通過感人肺腑的老白讓大家認(rèn)識(shí)到了字典這么有用的數(shù)據(jù)類型,這一期讓我們看看如何能更好的操作字典。 Hello ,同為小白的朋友們大家好,這期主要為大家?guī)碛嘘P(guān)字典的一些實(shí)用技巧。上篇筆記通過感人肺腑的老白讓大家認(rèn)識(shí)到了字典這么有用的數(shù)據(jù)類型,這一期讓我們看看如何能更好的操作字典。 基礎(chǔ)篇 下面我給大家來一個(gè)簡(jiǎn)單的...
摘要:這里推薦一本書源碼剖析源碼剖析豆瓣這本書把源碼中最核心的部分,給出了詳細(xì)的闡釋,不過閱讀此書需要對(duì)語言內(nèi)存模型和指針有著很好的理解。 是否非常想學(xué)好 Python,一方面被瑣事糾纏,一直沒能動(dòng)手,另一方面,擔(dān)心學(xué)習(xí)成本太高,心里默默敲著退堂鼓? 幸運(yùn)的是,Python 是一門初學(xué)者友好的編程語言,想要完全掌握它,你不必花上太多的時(shí)間和精力。 Python 的設(shè)計(jì)哲學(xué)之一就是...
閱讀 2898·2021-11-23 09:51
閱讀 3410·2021-11-22 09:34
閱讀 3313·2021-10-27 14:14
閱讀 1511·2019-08-30 15:55
閱讀 3348·2019-08-30 15:54
閱讀 1072·2019-08-30 15:52
閱讀 1892·2019-08-30 12:46
閱讀 2851·2019-08-29 16:11