在開發(fā)程序時(shí),又是會(huì)用到一段代碼多次,但是一遍一遍敲會(huì)很麻煩,那么就可以用函數(shù)把這段代碼打包起來(lái),后面只需要調(diào)用函數(shù)就可以實(shí)現(xiàn)代碼的功能,python中提供了許多內(nèi)建函數(shù),比如print(),函數(shù)也可以自定義,就是自己打包一段自己寫的代碼,在之后的開發(fā)中重復(fù)使用。
-
函數(shù)的使用分兩部分:
定義函數(shù):封裝 獨(dú)立的功能
調(diào)用函數(shù):享受 封裝 的成果- 定義函數(shù)的格式:
def 函數(shù)的名稱():
需要打包的代碼- 定義完函數(shù)后只需要調(diào)用就好了
直接輸入 函數(shù)名(): 就可以調(diào)用
注意:函數(shù)的定義必須在函數(shù)調(diào)用的上方,代碼是從上往下執(zhí)行的,必須要讓函數(shù)先存在,才能調(diào)用,否則程序會(huì)報(bào)錯(cuò)!
-
函數(shù)的參數(shù)
在定義函數(shù)時(shí),可以看到我們?cè)诤瘮?shù)名后面輸入了一個(gè)小括號(hào),這個(gè)小括號(hào)就是用來(lái)傳參數(shù)的,參數(shù)就是函數(shù)中的變量,可以增加函數(shù)的可用性。
函數(shù)分形參和實(shí)參:
形參——定義 函數(shù)時(shí),小括號(hào)中的參數(shù),是用來(lái)接收參數(shù)用的,在函數(shù)內(nèi)部 作為變量使用
實(shí)參——調(diào)用 函數(shù)時(shí),小括號(hào)中的參數(shù),是用來(lái)把數(shù)據(jù)傳遞到 函數(shù)內(nèi)部 用的a,b為參數(shù)直接以a,b的值運(yùn)算
-
函數(shù)的返回值
return語(yǔ)句表示在執(zhí)行完函數(shù)后會(huì)給調(diào)用者返回一個(gè)結(jié)果,并退出函數(shù),不帶參數(shù)值的return語(yǔ)句返回None,在調(diào)用函數(shù)時(shí),需要一個(gè)變量來(lái)接受返回的結(jié)果。
舉個(gè)栗子,還是求和:
代碼如下
def back(a,b):
return a+b
sum = back(1,2)
print(sum)一樣可以達(dá)到求和的效果-
函數(shù)根據(jù)有無(wú)返回值,有無(wú)參數(shù)可分為四種:
1.無(wú)參數(shù),無(wú)返回值
2.無(wú)參數(shù),有返回值
3.有參數(shù),無(wú)返回值
4.有參數(shù),有返回值
-
-
函數(shù)嵌套
函數(shù)嵌套即為在函數(shù)中調(diào)用其他函數(shù)
使用函數(shù)嵌套時(shí),代碼在調(diào)用 函數(shù)1 時(shí)遇到調(diào)用 函數(shù)2 就會(huì)先執(zhí)行完 函數(shù)2 的代碼才會(huì)繼續(xù)執(zhí)行 函數(shù)1 的代碼。先運(yùn)行1后運(yùn)行2 -
函數(shù)的全局變量和局部變量
變量起作用的代碼范圍稱為變量的作用域,不同作用域內(nèi)同名變量之間互不影響就像不同文件夾的同名文件間互不影響一樣。一個(gè)變量在函數(shù)外部定義和在內(nèi)部定義,其作用域是不同的,函數(shù)內(nèi)部定義的變量一般稱為局部變量在函數(shù)外部定義的變量一般稱為去全局變量。
局部變量
- 局部變量,就是函數(shù)內(nèi)部定義的變量
- 不同的函數(shù),可以定義相同的名字的局部變量,但是各用個(gè)的互不影響
- 局部變量的作用,為了臨時(shí)保存數(shù)據(jù)需要在函數(shù)中定義變量來(lái)進(jìn)行存儲(chǔ),這就是他的作用
在函數(shù)內(nèi)部定義的普通變量值在該函數(shù)內(nèi)起作用,當(dāng)函數(shù)運(yùn)行結(jié)束后,在其內(nèi)部定義的局部變量將被自動(dòng)刪除而不可訪問(wèn)。在函數(shù)內(nèi)部定義的全局變量當(dāng)函數(shù)結(jié)束后仍然存在并且可以訪問(wèn)
全局變量
- 如果一個(gè)變量,既能在一個(gè)函數(shù)中使用,也能在其他函數(shù)中使用,這樣的變量就是全局變量
在函數(shù)中修改全局變量
1、在函數(shù)外邊定義的變量叫做全局變量
2、全局變量能夠在所有的函數(shù)中進(jìn)行訪問(wèn)
4、如果在函數(shù)中修改全局變量,那么就需要使用global進(jìn)行聲明,否則出錯(cuò)
5、如果全局變量的名字和局部變量的名字相同,那么使用的是局部變量的,強(qiáng)龍不壓地頭蛇1、在函數(shù)中不使用global聲明全局變量時(shí)不能修改全局變量的本質(zhì)是不能修改全局變量的指向,即不能將全局變量指向新的數(shù)據(jù)。
2、對(duì)于不可變類型的全局變量來(lái)說(shuō),因其指向的數(shù)據(jù)不能修改,所以不使用global時(shí)無(wú)法修改全局變量。
3、對(duì)于可變類型的全局變量來(lái)說(shuō),因其指向的數(shù)據(jù)可以修改,所以不使用global時(shí)也可修改全局變量。
美女鎮(zhèn)樓?。。?!







