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