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

