python函數(shù)的高級應(yīng)用詳解
前言
函數(shù)是我們所熟知的,在python中函數(shù)的定義格式如下:
def 函數(shù)名(形式參數(shù)):
? 函數(shù)體
? 函數(shù)的封裝就是實現(xiàn)代碼塊的復(fù)用,python內(nèi)置了一些基礎(chǔ)的函數(shù),開發(fā)者也可以自己定義函數(shù),函數(shù)只能先定義,再進(jìn)行調(diào)用。
一、函數(shù)調(diào)用的步驟
1、程序遇到函數(shù)調(diào)用的情況時,暫停執(zhí)行
2、將實際參數(shù)值傳遞給函數(shù)參數(shù)
3、執(zhí)行函數(shù)體語句
4、返回值并繼續(xù)向下執(zhí)行
二、參數(shù)的打包和解包
打包
? 參數(shù)的打包指的是多個參數(shù)可以同時處理,也叫可變長度參數(shù), 可變長度參數(shù)在定義函數(shù)時主要有兩種形式*parameter和**parameter,前者用來接受任意多個參數(shù)并將其放在一個元組當(dāng)中,后者接收多個關(guān)鍵參數(shù)組成鍵值對并將其放在字典當(dāng)中。
打包為元組
def demo(*p): print(p) demo(1,2,3,4,5,6) #結(jié)果 (1,2,3,4,5,6)
打包為字典
def demo(**p): print(p) demo(x=1,y=2,z=3) #結(jié)果 {'x':1,'y':2,'z':3}
#參數(shù)的打包就是將形參設(shè)為*參數(shù)名形式,實參為多個參數(shù),這是后會將多個參數(shù)處理為元組或字典的可迭代對象,是把個體打包為整體。
解包
? 與參數(shù)的打包相對應(yīng),參數(shù)的解包同樣也有s和**s兩種形式,調(diào)用含有多個位置參數(shù)的函數(shù)時,可以使用列表,元組,集合等可迭代對象作為實參,在實參名前面加一個,Python會自動對其進(jìn)行解包,并把序列中的值分別傳遞給多個形參變量。
def demo(a,b,c,d): print(a+B*c/d) list1=[1,2,3,4] demo(*list1) #結(jié)果 2.5
? 如果實參是一個字典,可以使用**參數(shù)名的形式對其進(jìn)行解包操作,會把字典轉(zhuǎn)換成為類似關(guān)鍵參數(shù)的形式進(jìn)行參數(shù)傳遞。對于這種形式的序列解包,要求實參字典中的所有鍵必須是函數(shù)形參的名稱,或者與函數(shù)中兩個型號的可變長度參數(shù)相對應(yīng)。
s={'a':1,'b':2,'c':3} def demo(a,b,c=4) print(a,b,c) demo(**s) #結(jié)果 1 2 3
三、變量的作用域
變量的作用域就是變量能夠作用的空間
變量按照作用域劃分:全局變量,局部變量
全局變量:在函數(shù)體外定義的變量為全局變量
全局變量在函數(shù)內(nèi)外都能夠使用,但在函數(shù)內(nèi)不能直接修改全局變量, 如果在函數(shù)內(nèi)修改全局變量,必須添加 global 關(guān)鍵字(python不推薦在函數(shù)內(nèi)修改全局變量的值)
局部變量:在函數(shù)內(nèi)定義的變量為局部變量
局部變量是在函數(shù)內(nèi)定義的變量,在函數(shù)體外局部變量是無效的
在函數(shù)內(nèi)定義的局部變量和函數(shù)外定義的全局變量是兩個概念(變量同名)
a=1 def sum() a=3 #這里函數(shù)外的a和函數(shù)內(nèi)的a是兩個變量
四、變量的文檔注釋和變量名
1、函數(shù)doc文檔
函數(shù)doc文檔是用于描述函數(shù)功能,是函數(shù)內(nèi)的特殊注釋
def sum(a,b): ''' 返回兩個數(shù)的和 ''' return a+b
2、函數(shù)名的獲取
__name__方法
>>> print(print.__name__) print >>>
3、函數(shù)doc文檔的獲取
__doc__方法
?總結(jié)
?
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python 實現(xiàn)將小圖片放到另一個較大的白色或黑色背景圖片中
今天小編就為大家分享一篇python 實現(xiàn)將小圖片放到另一個較大的白色或黑色背景圖片中,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12一行python實現(xiàn)樹形結(jié)構(gòu)的方法
今天小編就為大家分享一篇一行python實現(xiàn)樹形結(jié)構(gòu)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08教你用Python pygame設(shè)置窗口標(biāo)題和圖標(biāo)
今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著用Python pygame設(shè)置窗口標(biāo)題和圖標(biāo)展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06解決python中遇到字典里key值為None的情況,取不出來的問題
今天小編就為大家分享一篇解決python中遇到字典里key值為None的情況,取不出來的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10