Python 中函数(function)的用法
函數(shù)是組織好的,可重復(fù)使用的,用來實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。
函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。Python提供了許多內(nèi)建函數(shù),比如print()、input(),也可以自己創(chuàng)建函數(shù),這被叫做用戶自定義函數(shù)。
一:定義函數(shù)
可以定義一個(gè)由自己想要功能的函數(shù),以下是簡單的規(guī)則:
- 函數(shù)代碼塊以 def 關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號()。
- 任何傳入?yún)?shù)和自變量必須放在圓括號中間。圓括號之間可以用于定義參數(shù)。
- 函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。
- 函數(shù)內(nèi)容以冒號起始,并且縮進(jìn)。
- return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回 None。
語法:
def functionname( parameters ):"""comments"""function_suitereturn [expression]實(shí)例:
def func(parameter):"""打印傳入的字符到顯示設(shè)備上"""print(parameter)return parameter二:函數(shù)調(diào)用
定義一個(gè)函數(shù)只給了函數(shù)一個(gè)名稱,指定了函數(shù)里包含的參數(shù),和代碼塊結(jié)構(gòu)。
這個(gè)函數(shù)的基本結(jié)構(gòu)完成以后,可以通過另一個(gè)函數(shù)調(diào)用執(zhí)行,也可以直接從Python提示符執(zhí)行。
實(shí)例:
''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' # coding: utf-8 # 定義函數(shù) def func(parameter):"""打印傳入的字符到顯示設(shè)備上"""print(parameter)return parameter# 調(diào)用函數(shù) func('五星紅旗迎風(fēng)飄揚(yáng)') func('再次調(diào)用func()函數(shù)')以上實(shí)例輸出結(jié)果:
五星紅旗迎風(fēng)飄揚(yáng) 再次調(diào)用func()函數(shù)三:參數(shù)傳遞
在 python 中,類型屬于對象,變量是沒有類型的:
a = [1,2,3] a = 'China'以上代碼中,[1,2,3] 是 List 類型,“Runoob” 是 String 類型,而變量 a 是沒有類型,她僅僅是一個(gè)對象的引用(一個(gè)指針),可以是 List 類型對象,也可以指向 String 類型對象。
可更改(mutable)與不可更改(immutable)對象
在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而 list,dict 等則是可以修改的對象。
參數(shù)
以下是調(diào)用函數(shù)時(shí)可使用的正式參數(shù)類型:
- 必備參數(shù)(位置參數(shù))
- 關(guān)鍵字參數(shù)
- 默認(rèn)參數(shù)
- 不定長參數(shù)
- 必備參數(shù)
必備參數(shù)須以正確的順序傳入函數(shù)。調(diào)用時(shí)的數(shù)量必須和聲明時(shí)的一樣。
調(diào)用函數(shù)時(shí),你必須傳入一個(gè)參數(shù),不然會(huì)出現(xiàn)語法錯(cuò)誤
定義一個(gè)函數(shù)rt(a),調(diào)用函數(shù)時(shí)沒有傳入實(shí)參:
def rt(a):print(a)rt()報(bào)錯(cuò):
rt() TypeError: rt() missing 1 required positional argument: 'a'正確傳入必備參數(shù):
''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' def rt(a):print(a)rt(123) rt('ASggh')輸出:
123 ASggh關(guān)鍵字參數(shù)
關(guān)鍵字參數(shù)和函數(shù)調(diào)用關(guān)系緊密,函數(shù)調(diào)用使用關(guān)鍵字參數(shù)來確定傳入的參數(shù)值。
使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時(shí)參數(shù)的順序與聲明時(shí)不一致,因?yàn)?Python 解釋器能夠用參數(shù)名匹配參數(shù)值。
''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' # 可寫函數(shù)說明 def printinfo(name, age):"""打印任何傳入的字符串"""print("Name: ", name)print("Age ", age)return# 調(diào)用printinfo函數(shù) printinfo(age=50, name="miki")輸出結(jié)果:
Name: miki Age 50默認(rèn)參數(shù)
調(diào)用函數(shù)時(shí),默認(rèn)參數(shù)的值如果沒有傳入,則被認(rèn)為是默認(rèn)值。下例會(huì)打印默認(rèn)的age,如果age沒有被傳入:
''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' # 可寫函數(shù)說明 def printinfo(name, age = 28):"""打印任何傳入的字符串"""print("Name: ", name)print("Age ", age)return# 調(diào)用printinfo函數(shù) printinfo(name='Carson') printinfo(age=50, name="miki")輸出結(jié)果:
Name: Carson Age 28 Name: miki Age 50不定長參數(shù)
你可能需要一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù)。這些參數(shù)叫做不定長參數(shù),和上述2種參數(shù)不同,聲明時(shí)不會(huì)命名。
四:匿名函數(shù)
python 使用 lambda 來創(chuàng)建匿名函數(shù)。
- lambda只是一個(gè)表達(dá)式,函數(shù)體比def簡單很多。
- lambda的主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊。僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。
- lambda函數(shù)擁有自己的命名空間,且不能訪問自有參數(shù)列表之外或全局命名空間里的參數(shù)。
雖然lambda函數(shù)看起來只能寫一行,卻不等同于C或C++的內(nèi)聯(lián)函數(shù),后者的目的是調(diào)用小函數(shù)時(shí)不占用棧內(nèi)存從而增加運(yùn)行效率。
語法:
lambda函數(shù)的語法只包含一個(gè)語句,如下:
lambda [arg1 [,arg2,.....argn]]:expression實(shí)例:
num = lambda x, y: x*y print(num(3, 9)) print(num(7, 8))輸出:
27 56總結(jié)
以上是生活随笔為你收集整理的Python 中函数(function)的用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5种Python逐行读取文件的方式
- 下一篇: python命名元组