您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)Python的函數(shù)使用是怎么樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
python
提供了一種方便快捷的跳出循環(huán)的方法-break
,
示例如下,計算未知數(shù)字個數(shù)的總和:
if __name__ == "__main__": sum = 0 while True: num = str(input('輸入的數(shù)字 (或者 "完成"): ')) if num == '完成': break #跳出循環(huán) sum = num sum = sum + num print('計算總和為:' + str(sum))
這段代碼中,while
的循環(huán)條件為True,這也就表示這段代碼將會永遠循環(huán)下去,直到 break 被執(zhí)行時才會結(jié)束,也就是 num
的值為"完成"時解說。對比之前單單使用while
循環(huán),少了重復(fù)的 input 語句,但如果使用許多 break
也會使得代碼難以理解,所以在使用時需要視情況而定。該段代碼執(zhí)行結(jié)果如下:依照開發(fā)經(jīng)驗來看,除非 break 的使用使代碼更加簡潔清晰,一般不會使用該語句。當(dāng)然,跳出循環(huán)的方法還有類似自定義異常、封裝循環(huán)函數(shù)(多使用return
)等方法,但對這些的使用一般建立在使用多了之后,在此不做過多的闡述,后面會隨著對python
的深入使用進行舉例。
另外,continue
與 break
是相關(guān)的,當(dāng)在循環(huán)體中使用continue
時,就會跳轉(zhuǎn)到循環(huán)條件中,進入下一次循環(huán)。
if __name__ == "__main__": for i in range(3): for j in range(3): for k in range(3): if i == j == k == 2: break else: print(str(i) + " " + str(j) + " " + str(k)) else: continue break else: continue break
這段代碼可以簡單的理解為排列組合除了i=j=k=2
之外的所有情況,但也不會輸入任意i=j=k=3
的組合,這是因為代碼邏輯中包含continue
和break
的,這么看的話是不是有些不太好理解,所以在開發(fā)中一般不要這么使用。
函數(shù),在每一種開發(fā)語言的使用中都是十分重要的。它是代碼塊,可以輸入輸出,實現(xiàn)需要的功能調(diào)用,可以大量進行復(fù)用。我們正在使用的python
已經(jīng)擁有了龐大數(shù)量的功能函數(shù),這方便了我們的學(xué)習(xí)、開發(fā)、數(shù)據(jù)分析等使用。在Python
的函數(shù)中,我們將其分為內(nèi)置函數(shù)、自定義函數(shù)、main
函數(shù)三個模塊,當(dāng)然,使用的過程中會涉及到變量以及參數(shù),這些都會舉例進行說明。
在之前的闡述中,我們一直使用的就是python
提供的強大的內(nèi)置函數(shù)(Python
強大的語法支持)作為示例。
本次以pow()函數(shù)為例,計算3 的3次方:
>>> pow(3,3) 27
內(nèi)置函數(shù)pow()
函數(shù)中,pow
為函數(shù)名,兩個3是傳遞給函數(shù)的參數(shù),結(jié)果27為返回值。
如下圖:
上圖概述了內(nèi)置函數(shù)的調(diào)用,當(dāng)我們在使用python
調(diào)用函數(shù)時,會將函數(shù)調(diào)用替換成為返回值。在基本的函數(shù)運算中,我們會注意到pow(3,3)
的返回值與3**3的返回值是一樣的,也就是二者可以說是等價的關(guān)系。細節(jié)的朋友們會發(fā)現(xiàn),在python中,pow(0,0)
的值為1,同樣,0**0=1。當(dāng)然,這在實際開發(fā)中幾乎不會用到,只是再次強調(diào)python
函數(shù)的全面和強大!
在實際使用中,我們會發(fā)現(xiàn)并不是所有函數(shù)都有返回值,有些情況是沒有返回值的,下面我們舉一個簡單的例子,如下:在a有賦值的時候返回值是正常的,但是在未給a賦值時,其返回值是一個None,既不是字符串,也不是數(shù)字,意義就是告訴你這段代碼沒有任何返回值,需要自查BUG。(這里比較隨意,在linux環(huán)境中進行的示例)
在使用函數(shù)時,注意不要讓自己的函數(shù)與內(nèi)置函數(shù)相同,避免無意間讓內(nèi)置函數(shù)指向其它函數(shù)或者函數(shù)值,即便你使用了,python
并不會提示你這個錯誤。
這里我們讓pow
指向了數(shù)字520,后面我們再次使用使用pow()
時會出現(xiàn)上圖所顯示的錯誤。所以為了避免這種情況,需避開名字相同的命名方式哦,但遇到了的話需要重新進入python
環(huán)境后,修改函數(shù)名,再次執(zhí)行
自定義函數(shù)功能是程序員在使用中經(jīng)常會用到的,因為通常會根據(jù)具體需求實現(xiàn)某個邏輯的功能。
舉一個簡單的例子,實現(xiàn)一個計算面積的函數(shù):
import math def round_area(x): return math.pi * x ** 2 if __name__ == "__main__": x = int(input()) area = round_area(x) print("半徑為" + str(x) +"cm的圓的面積為:"+ str(area))
對于自定義函數(shù)的使用,一般將這個功能函數(shù)保存在Python
文件中,例如我們保存為practice2.py
。在使用時只需調(diào)用round_area
函數(shù)名,并且傳入?yún)?shù)x(對于自定義函數(shù)中的參數(shù)可有可無,根據(jù)自己的需求使用)??梢韵蚴褂闷渌麅?nèi)置函數(shù)一樣調(diào)用round_area(),
差別就是你對于自定義的函數(shù)擁有絕對的控制權(quán)(任意修改)。
由上面的例子可以看出,自定義函數(shù)包含幾個規(guī)則:
1.函數(shù)以def
(函數(shù)頭)關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號();
2.任何傳入?yún)?shù)和自變量必須放在圓括號中間。圓括號之間可以用于定義參數(shù);
3.函數(shù)內(nèi)容以冒號起始,并且縮進;
4.return
[表達式] 結(jié)束函數(shù),選擇性地返回一個值給調(diào)用方。不帶表達式的return
相當(dāng)于返回 None;
函數(shù)頭后面是可選的文檔字符串。文檔字符串簡要地描繪了函數(shù)的功能,可能包含示例和其他有益的信息。雖然文檔字符串是可選的,但需要使用合理的命名: 當(dāng)你編寫大量函數(shù)時,很容易忘記它們的功能和工作原理,而寫得好的文檔字符串可很好的讓你使用。
文檔字符串后面是函數(shù)體,這是一個縮進的代碼塊,完成了需要的工作。在這個代碼塊中,可使用函數(shù)頭中的變量。
本實例中使用了return
作為關(guān)鍵詞返回一個值,當(dāng)其執(zhí)行時,Python
跳出函數(shù),并返回到調(diào)用這個函數(shù)的地方。 在自定義函數(shù)時, return
語句通常是函數(shù)中最后被執(zhí)行的代碼,但并非是必須。
import math def round_area_1(x): print(math.pi * x ** 2) if __name__ == "__main__": x = int(input()) area = round_area_1(x) print("半徑為" + str(x) +"cm的圓的面積為:"+ str(area))
執(zhí)行結(jié)果如下:可以看到有面積結(jié)果的輸出,但是最后卻輸出了一個None值。None 用于指出函數(shù)不返回值,這是一個自定義函數(shù)不使用return
語句帶來的副作用,但Python
為消除此副作用提供了強大的支持(此處不做闡述,先體驗return
式自定義函數(shù)), 包含在函數(shù)中定義函數(shù)以及將函數(shù)作為值傳遞給其他函數(shù)。
如果你對多種語言都有所了解,那么必定知道main
函數(shù)是一種十分普遍且必須使用的,如Java、C、C++等。Python同樣如此,當(dāng)我們在編寫python程序時,至少應(yīng)該使用一個main函數(shù)。
例如在Python流程控制中的示例:
if __name__ == "__main__": while True: scan_user = input('please input your name: ') scan_pass = input('please input your passwd: ') if scan_pass == 'if/else': print('Logging on now!') else: print('your passwd is incorrect!!') print('我不在if/else語句中!')
可以改成如下。這樣所有代碼均位于函數(shù)頭main
后面,且進行了縮進,在編輯器中運行已寫好的 *.py 文件是,必須輸入main()
進入代碼,開始執(zhí)行。
其優(yōu)點在于:可以傳參,更簡單的運行整個程序。
def main(): scan_user = input('please input your name: ') scan_pass = input('please input your passwd: ') if scan_pass == 'if/else': print('Logging on now!') else: print('your passwd is incorrect!!') print('我不在if/else語句中!')
有函數(shù)的使用,就會涉及到變量和參數(shù)以及模塊,對于這三個的使用,會在下篇文章中進行闡述。請有興趣的朋友先好好體會要python
函數(shù)的使用。
看完上述內(nèi)容,你們對Python的函數(shù)使用是怎么樣的有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。