在學習函式時,本質上來說可結合已學過的其他語言進行模擬
一、函式的概念(有點物件導向程式設計的思想的意思)
(1)函式的定義
將若干的語句進行封裝起乙個名字,當呼叫這個名字時,執行這些語句就叫函式
(2)函式的特性
1、減少**重複
2、使**易維護
3、增強程式的可擴充套件行
(3)舉例
def fn():#函式名
print("hello")
fn()#進行呼叫
或者帶引數
def add(x,y):
res = x+y
return res
c = add(3,5)
print(c)
(4)函式的返回值
說明:在函式執行過程中,如果有return語句,意味著執行結束並返回結果,如果沒有則函式的返回值為none
二、函式引數
包括:形參、實參、預設引數、位置引數、關鍵引數、非固定引數
1.形參與實參
顧名思義,形參為在乙個函式中預設的變數,而實參則為呼叫函式時實際傳入的值
def add(x,y): #形參
res = x+y
return res
c = add(3,5)#實參
print(c)
2.預設引數
預設引數的意思是給形參賦乙個預設值
注意:預設引數必須放在一組形參的末尾
def person(name,age,country="cn"):#賦預設值
3.位置引數
函式呼叫時根據函式定義的引數位置進行值的傳遞
4.關鍵引數
通過鍵值對的形式進行呼叫指定
person(name='pchy',age=25)
q:如果關鍵字引數和位置引數名稱衝突怎麼辦?
find_all( name , attrs , recursive , text , **kwargs )
此時在kwargs傳遞的引數中也有乙個name,那麼採用下列方式呼叫
find_all("input", attrs=)
5.非固定引數
函式在定義時傳遞的引數是可變時使用
包括*args和**kwargs
*args這種方式會在呼叫時將傳入的引數變成元組的形式,而**kwargs則會將傳入的引數變成字典的形式
def person(name,age,*wargs):
print(name,age,args)
person('ph',20,'aa)
而**kwargs則會將傳入的引數變成字典的形式
def person(name,**kwargs):
print(name,kwargs)
person('ph',20,'aa')
三、區域性變數與全域性變數
兩者的區別為函式的作用域範圍不同,區域性變數的作用域為函式體內部,而全域性變數作用域為整個**塊
注意:字串、整數不能在函式體裡面改為全域性變數,而列表和字典可以做修改
name= "test"
def change(name)
print("before",name)
name = "new"
print("after",name)
print(name)
四、巢狀函式、匿名函式、遞迴函式
(1)巢狀函式
在乙個函式中巢狀子函式,深層次的理解是函式也是乙個變數,函式體為其value值
name = "alex"
def change_name():
name = "alex2"
def change_name2():
name = "alex3"
print("第3層列印",name)
change_name2() #呼叫內層函式
print("第2層列印",name)
change_name()
print("最外層列印",name)
要點:
1.只有宣告的函式才可稱為巢狀函式,此時該函式相當於乙個區域性變數
2.此時,如果你直接呼叫change_name2()這個子函式,會報錯undefined,原因為無法找到該區域性變數。
3.作用域是從最裡往外一層層的找是否定義了該變數的值
(2)遞迴函式
函式在內部呼叫自己本身,這個函式稱為遞迴函式
遞迴特性:
1.必須有乙個結束條件,不能無限執行下去
2.每做一次遞迴,一定比上次遞迴的範圍有所縮小
def calc(n):
print(n)
if int(n/2) ==0:
return n
return calc(int(n/2))
calc(10)
(3)匿名函式
當傳入引數時,不需要顯式的定義函式
lambda x:x*x
lambda表示匿名函式,冒號前面的x表示函式引數,後面的為表示式
def mul(x):
return x*x
print(mul(5))
#匿名函式
mul = lambda x:x*x
五、高階函式
函式除了可以接收變數以外,還可以接收另乙個函式作為引數
def add(x,y,f):
return f(x) + f(y)
res = add(3,-6,abs)
print(res)
MSN Messenger協議概況
前 言 1999年,microsoft向ietf提交了乙份 msn messenger service 1.0 protocol 草案,這是最初版本的msn messenger協議。在以後幾年,該公司不再公開有關msn messenger協議的公升級 修改細節的官方文件。但無論是開發第三方的聊天客戶...
莆田學院概況
莆田學院概況 莆田學院是經國家教育部批准成立的具備高等學歷教育資格的一所綜合性公 層次全日制的普通高等院校。學校坐落在台灣海峽的西海岸 閩中 海岸 秀麗的湄州灣畔 莆田市區中心的楊梅山麓。莆田是海上 和平女神 媽祖的故鄉,四季如春,氣候宜人,風光秀麗,環境優美,歷史文化積澱深厚,享有 文獻名邦 海濱...
HTML基本概況
什麼是html html的作用 html文件的基本結構 charset utf 8 title head align center 一級標題h1 align right 二級標題h2 body html 文件結構標籤 meta 標籤 meta 標籤共有2個屬性 name 和 http equiv n...