python學習筆記七 函式

2021-09-24 19:53:14 字數 3215 閱讀 8897

函式

1.結構化程式設計

將特殊的邏輯,功能性**,單獨的抽取出來,封裝成函式進行呼叫

min([1,2,3]) ---邏輯被封裝到了函式當中,呼叫起來非常方便簡潔

2.非結構化程式設計

所有的**和邏輯都在同乙個**塊中

圖書管理系統

邏輯比較混亂,**量太多,太雜

函式是程式的重要組成部分

乙個程式中可以有多個函式組成,多個函式相互作用

建立函式的關鍵字:def ---定義(動詞) 函式的定義(名詞)---函式的建立

函式的建立(函式的定義)

def 函式名(引數列表):    #引數可以是多個,多個引數要用逗號隔開

函式的實現(核心**)

函式呼叫

函式名(引數)

函式的執行機制

當呼叫函式的時候,直譯器(pvm)會根據函式名稱所定義的位置,進入到函式內部,進行執行,執行完畢後,返回到函式的呼叫處

函式的特點:

1.避免**的冗餘

2.提高**的可重用性

3.提高**的可維護性

4.提高**的靈活性

函式定義的位置:

1.函式和全域性變數類似,從檔案最前端書寫(沒有任何縮排)

2.函式和區域性變數類似,定義在其他函式內部

函式的結構

1.函式的宣告(函式的定義)

def 函式名(引數列表)

返回值2.函式的內容(實現)

核心**

3.返回值

return 要返回的值

函式的返回值

關鍵字:return

return要返回的值

任何乙個函式,一定有return,如果沒有書寫return,系統會預設新增renturn none

作用:返回整個函式(函式不在執行)

函式的引數

1.引數的劃分:

形式引數:函式宣告的時候所寫的引數,沒有具體的值(從未使用過的標籤)----簡稱:形參

實際引數:(讓標籤貼在實際引數上)---簡稱:實參

位置引數

引數和位置有關---引數是有順序的---實參和形參的位置必須一一對應

位置引數不能過多,也不能過少

關鍵字引數

定義了關鍵字的引數(函式的呼叫---實參)

關鍵字引數和順序無關---關鍵字必須是形式引數中定義的變數名

def fun(a,b):

print(a.b)

fun(b=10,a=20)

注意:1.位置引數應該寫在關鍵字引數之前,如果形參**現了關鍵字引數,pvm預設認為從此往後的所有引數都是關鍵字引數

2.實際引數只能被賦值一次(不能被重複賦值)

def fun(a,b):

print(a,b)

fun(20,a=10)#錯誤,a被重複賦值

fun(10,20)

--------------------------------------

def fun(a,b):

print(a,b)

fun(a=10,a=20,b=30)#錯誤,關鍵字引數重複

預設引數

定義了預設值的引數

def fun(a,b=100):# a=10 b=100 b=20

print(a,b)

fun(10,20)

如果預設引數被傳遞了值,則覆蓋掉以前的預設值

預設引數必須放在位置引數之後

可變長引數

收集引數----(函式的定義)

1.在引數前加*

將所有的引數,打包成元組

可以直接使用位置引數傳遞實參

def fun(*a):

print(a)

fun(1,2,3,4,5)

輸出:#(1,2,3,4,5)

2.在引數前加**

將所有的引數,打包成字典

必須使用關鍵字引數傳遞實參

def fun(**a):

print(a)

fun(a=1,b=2,c=3,d=4,e=5)

輸出: #()

3.可變長引數在位置引數之前時,位置引數只能用關鍵字引數進行傳值

def fun2(*a,b):

print(a)

fun2(1,2,3,4,5)

函式的文件

文件注釋:'''三引號'''

函式文件必須在函式結構中的第一行出現

1.文件的匯出:

函式名._doc_

2.help函式

help(函式名)

help可以自動列印文件(不用再次print)

函式和過程

1.函式

函式的宣告+函式的返回值

2.過程

函式的實現(內容)

返回值關鍵字:return

1.任何函式都有返回值

如果沒寫,系統預設新增return none

2.return之後的語句不會執行

函式的返回,依託於return

3.return之後可以跟任何資料

數字,列表,字串,none,bool....

4.return之後可以跟表示式

5.return之後可以跟函式的呼叫

6.return之後可以跟乙個值

間接的返回了多個值,本質上只傳遞了乙個值

函式的變數的作用域

作用域:作用範圍:命名空間

1.區域性變數

1.定義在函式內部的變數稱之為區域性變數

2.先定義(賦值),後使用

3.從定義開始到包含它的**塊結束

2.全域性變數

1.定義在檔案的開頭(沒有任何縮排)

2.作用範圍:整個檔案(如果以指令碼的形式執行,執行的**可能會截斷作用域)

3.區域性變數和全域性變數發生了命名衝突,以區域性變數為優先.如果重新賦值,區域性變數不會影響全域性變數

原因:區域性建立了乙個同名的新的變數(區域性變數)

global關鍵字

global

使用方法:

global 全域性變數名

1.global 後宣告的變數,叫全域性變數

從本行開始該函式內部用的所有變數都是全域性變數

nonlocal關鍵字

nonlocal

常用方法

nonlocal 外層函式的區域性變數名

1.nonlocal後宣告的變數,是外層函式的區域性變數

從本行開始該函式內部用的所有變數都是外層函式的區域性變數

nonlocal---外層函式的區域性變數

Python學習筆記(七)

深淺拷貝 set 集合 函式a 1,2 3,4 b a.copy print b 結果 1,2 3,4 b 0 0 8 print a 結果 8,2 3,4 print b 結果 8,2 3,4 原理圖 去重關係測試 定義語法 s set in not in 集合等價與不等價 子集 s set al...

python學習筆記(七)

帶有 yield 關鍵字的的函式在 python 中被稱之為 generator 生成器 python 直譯器會將帶有 yield 關鍵字的函式視為乙個 generator 來處理。乙個函式或者子程式都只能 return 一次,但是乙個生成器能暫停執行並返回乙個中間的結果 這就是 yield 語句的...

Python學習筆記七

物件導向程式設計 物件導向的特性如下 類 具有相同屬性和方法的一類事物,成為類。物件 類的例項化後的結果,乙個類可以例項化多個物件,每個物件也可以不同的屬性。封裝 在類中對資料的賦值,類裡面包含著類的資料和方法。繼承 乙個類可以派生出子類,在父類定義的屬性方法自動被子類繼承。多型 乙個類可以有多個子...