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