網(wǎng)站html5自適應(yīng)屏幕營銷策劃精準營銷
一、函數(shù)的定義及調(diào)用
1.函數(shù)的定義:
函數(shù)的定義:函數(shù)是將一段能實現(xiàn)某種特定功能的代碼,使用函數(shù)名進行封裝,并通過函數(shù)名稱進行調(diào)用。從而達到一次編寫,多次調(diào)用的目的。
2.函數(shù)類型分為兩類:
(1)內(nèi)置函數(shù):
輸出函數(shù):print()
輸入函數(shù):input()
列表定義函數(shù):list()
(2)自定義函數(shù):
def 函數(shù)名稱(參數(shù)列表):函數(shù)體[return返回值列表]
注:函數(shù)名稱是自己去定義的,參數(shù)列表里面有多個參數(shù)。
注:return不是必須需要的,可以省略不寫。
3.函數(shù)調(diào)用:
函數(shù)名(參數(shù)列表)
注:通過函數(shù)名進行調(diào)用函數(shù)。
注:對函數(shù)的個個參數(shù)進行實際的賦值。
注:使用實際參數(shù)參與函數(shù)功能的實現(xiàn)。
?二、函數(shù)的參數(shù)傳遞
1.位置參數(shù)
(1)位置參數(shù)的定義:是指調(diào)用時的參數(shù)個數(shù)和順序必須與定義的參數(shù)個數(shù)和順序相同。
(2)位置參數(shù)的運用:
def happy_birthday(name,age):print('祝'+name+'生日快樂')print(str(age)+'生日快樂')#調(diào)用
happy_birthday('wjl',18)
2.關(guān)鍵字參數(shù):
(1)關(guān)鍵字參數(shù)的定義:是在函數(shù)調(diào)用時,使用”形參名稱=值“的形式進行傳參,傳遞參數(shù)可以與定義時的參數(shù)順序不同。
(2)關(guān)鍵字參數(shù)的運用:
def happy_birthday(name,age):print('祝'+name+'生日快樂')print(str(age)+'生日快樂')#關(guān)鍵字傳參
happy_birthday(age=18,name='wjl')
#使用的關(guān)鍵字傳參是打亂自定義函數(shù)中參數(shù)的順序,但是參數(shù)的關(guān)鍵字還是和對應(yīng)的數(shù)據(jù)類型相對應(yīng)happy_birthday('wjl',age=18)
#函數(shù)調(diào)用的過程中,位置傳參和關(guān)鍵字傳參是可以同時使用的。
#上面的兩種傳參方式的同時使用有個條件,就是必須位置傳參在前,關(guān)鍵字傳參在后。
注:使用的關(guān)鍵字傳參是打亂自定義函數(shù)中參數(shù)的順序,但是參數(shù)的關(guān)鍵字還是和對應(yīng)的數(shù)據(jù)類型相對應(yīng)。
注:函數(shù)調(diào)用的過程中,位置傳參和關(guān)鍵字傳參是可以同時使用的。
注:上面的兩種傳參方式的同時使用有個條件,就是必須位置傳參在前,關(guān)鍵字傳參在后。
3.默認值參數(shù):
(1)默認值參數(shù)的定義:是在函數(shù)定義時,直接對形式參數(shù)進行賦值,在調(diào)用時如果該參數(shù)不傳值,將使用默認值,如果該參數(shù)傳值,則使用傳遞的值。
注:但是這里有一個輸入?yún)?shù)的順序,必須是按照函數(shù)定義時的順序傳遞。
(2)默認值參數(shù)的運用:
def happy_birthday(name='wjl',age=18):print('祝'+name+'生日快樂')print(str(age)+'生日快樂')#調(diào)用
happy_birthday()#不用傳參
happy_birthday('ljw')#位置傳參
happy_birthday(age=19)#關(guān)鍵字傳參,name采用默認值
3.可變參數(shù):
可變參數(shù)分為兩種:
(1)個數(shù)可變的位置參數(shù):在參數(shù)前加一顆星(*para),para為形式參數(shù)的名稱,函數(shù)調(diào)用時可接收任意個數(shù)的實際參數(shù),并放到一個元組中。
個數(shù)可變的位置參數(shù)的運用:
def fun(*para):print(type(para))for item in para:print(item)#調(diào)用
fun(10,20,30,40)
fun(10)
fun(10,20)
fun([10,20,30,40])#實際上傳的是一個參數(shù)
#在調(diào)用時,參數(shù)前加一顆星,分將列表進行解包
fun(*[11,22,33,44])
?注:個數(shù)可變的位置參數(shù),就是可以輸入多個值,將這些值一起輸入到函數(shù)中,輸入的這些參數(shù)都是元組類型。
注:將一個包含多個元素的列表作為實際參數(shù)輸入,fun函數(shù)只能將其整體看作一個參數(shù)。但是可以使用解包,將其不被看做一個參數(shù)。
#在調(diào)用時,參數(shù)前加一顆星,分將列表進行解包
fun(*[11,22,33,44])
(2)個數(shù)可變的關(guān)鍵字參數(shù):在參數(shù)前加兩顆星(**para),在函數(shù)調(diào)用時可接收任意多個”參數(shù)=值“形式的參數(shù),并放到一個字典中。
注:參數(shù)的類型是字典類型,輸入?yún)?shù)的時候要使用關(guān)鍵字傳參,得是賦值的形式,這也就與其類型相對應(yīng)上了,因為參數(shù)輸入到函數(shù)后的類型為字典型,傳參結(jié)構(gòu)與構(gòu)建字典時的結(jié)構(gòu)就很相似。
注:個數(shù)是可以發(fā)生改變的,所以可根據(jù)自己的情況進行輸入。
?個數(shù)可變的關(guān)鍵字參數(shù)的運用:
#個數(shù)可變的關(guān)鍵字參數(shù)
def fun2(**kwpara):print(type(kwpara))for key,value in kwpara.items():print(key,'----',value)#調(diào)用
fun2(name='wjl',age=19,weight=120)#關(guān)鍵字參數(shù)
如果上面?zhèn)鲄橐粋€字典時,會出現(xiàn)異常,我們就需要對這個字典進行解包操作。
5.討論有關(guān)參數(shù)的混合使用的幾個問題:
關(guān)于參數(shù)這部分我們已經(jīng)在前面提到過了,有些參數(shù)是可以同時使用的,比如在調(diào)用函數(shù)傳遞參數(shù)時,我們使用到了位置參數(shù)和關(guān)鍵字參數(shù)同時使用的情況。
前面遇到混合使用參數(shù)的情況有以下幾種情況:
(1)在調(diào)用函數(shù)輸入實際參數(shù)時,我們用到了位置參數(shù)和關(guān)鍵字參數(shù)的混合使用。
happy_birthday('wjl',age=18)
#函數(shù)調(diào)用的過程中,位置傳參和關(guān)鍵字傳參是可以同時使用的。
#上面的兩種傳參方式的同時使用有個條件,就是必須位置傳參在前,關(guān)鍵字傳參在后。
注:函數(shù)調(diào)用的過程中,位置傳參和關(guān)鍵字傳參是可以同時使用的。上面的兩種傳參方式的同時使用有個條件,就是必須位置傳參在前,關(guān)鍵字傳參在后。
在這個注意事項里為什么必須位置參數(shù)在前而關(guān)鍵字參數(shù)在后呢,這是因為定義函數(shù)時,我們把參數(shù)的順序給定了下來,這個參數(shù)好比就是通道傳遞一樣,這個只能是這個類型的參數(shù),不能是其他的類型。我們在考慮起那面說的位置傳參在前,關(guān)鍵字傳參在后,就印證了上面的說法,因為前一個參數(shù)的類型是字符型而第二個參數(shù)類型是整型,如果這兩參數(shù)順序搞錯的化,就會異常。
(2)在定義函數(shù)時,我們能將位置參數(shù)和默認參數(shù)一起使用。
def fun(a,b=20):pass
?但是使用時要注意的是位參在前而默認參在后。
def fun(a,b=20):passdef fun(a=20,b):#報錯了!pass
#a位置參數(shù),b為默認值參數(shù)。
#在定義函數(shù)時,位置參數(shù)和默認值參數(shù)可以混合的使用。
# 但是必須是位置參數(shù)在前,默認值參數(shù)在后。
這個底層邏輯和我們剛才討論的一樣,也就是通道對應(yīng)情況問題,這個未知參數(shù)和實際參數(shù)是一一對應(yīng)的,不能將其順序搞混了。再說回來為什么關(guān)鍵字可以交換順序呢,這是因為它采用的是一種給參數(shù)賦值的形式針對性就在那,不用考慮對應(yīng)問題。
三、函數(shù)的返回值
返回值的定義:如果函數(shù)的運行結(jié)果需要在其他的函數(shù)中運用的話,那么這個函數(shù)就應(yīng)該被定義為帶返回值的函數(shù)。
函數(shù)的運行結(jié)果使用return關(guān)鍵字進行返回。return可以出現(xiàn)在函數(shù)中的任意一個位置,用于結(jié)束函數(shù)。返回值可以是一個值,或多個值,如果返回的值是多個,結(jié)果是一個元組。
當返回值是一個的時候:
#函數(shù)的返回值
def calc(a,b):print(a+b)calc(10,20)
print(calc(1,2))#Nonedef calc2(a,b):s=a+breturn sprint('-'*10)
get_s=calc2(1,2)
print(get_s)get_s2=calc2(calc2(1,2),3)
print(get_s2)
當返回值是為多個的時候:
注:返回值為多個的時候返回的是一個元組類型的值。如果想一個一個獲得返回值的話需要進行解包操作。
def get_sum(num):s=0odd_sum=0#奇數(shù)和even_sum=0#偶數(shù)和for i in range(1,1+num):if i%2!=0:odd_sum+=ielse:even_sum+=is+=ireturn odd_sum,even_sum,s#三個值result=get_sum(10)
#解包就值
a,b,c=get_sum(10)
print(a,b,c)
?四、變量的作用域
變量作用域的定義:指變量起作用的范圍,根據(jù)作用的大小可分為局部變量和全局變量。
局部變量:
定義:在函數(shù)定義處的參數(shù)和函數(shù)內(nèi)部定義的變量
作用范圍:僅在函數(shù)內(nèi)部,函數(shù)執(zhí)行結(jié)束,局部變量的生命周期也結(jié)束
全局變量:
定義:在函數(shù)外定義的變量或函數(shù)內(nèi)部使用global關(guān)鍵字修飾的變量
作用范圍:在整個程序,程序運行結(jié)束,全局變量的生命周期才結(jié)束