python07_函數

函數:是指實現某個功能的一段代碼
使用函數的好處:
1.模塊化程序設計
2.減少代碼冗餘
3.維護方便

函數的格式:
python07_函數

1)函數參數
定義:函數取得的參數是你提供給函數的值
參數分爲:
形參:參數名稱
實參:提供給函數調用的值
注意:形參和實參可以同名,但不一定是同一個對象,也可以不同名

分類:
1.按定義
必選參數-----在調用時必須要填
默認參數-----提供默認值,調用時可不填
可變長位置參數(*args)
可變長關鍵字參數(**args)

ps:函數相當於打包,*args和**args相當於拆包
python07_函數
python07_函數

2.按調用
位置參數----按參數順序依次傳遞
關鍵字參數----按key依次傳遞
注意:若函數裏兩種參數都有,關鍵字參數要放在位置參數的後面,如 userinfo(18,"female",name="han")

參數定義的最佳方式:mysun(必選參數,*args,默認參數,**args)

參數的調用:mysun(位置參數,關鍵字參數)

2)函數return語句
作用:用來退出函數,函數遇到return就結束執行,函數默認返回None
python07_函數

3)匿名函數
定義:沒有名字的函數,只能有一個表達式,不用寫return
格式:
python07_函數
注意:
匿名函數可以設置默認參數,可變長參數
當函數只是實現簡單且一次性使用時,可定義爲匿名函數
把匿名函數作爲返回值返回
python07_函數
python07_函數

4)遞歸函數
定義:在函數的定義中使用函數自身的方法
實現遞歸的條件:
出口條件,即遞歸“什麼時候結束”,通常在遞歸函數的開始就寫好
python07_函數
注意:
如果可以使用普通函數解決,儘量不要用遞歸,數據存放到堆棧中,遞歸次數多,會導致內存的消耗比較大

5)函數的參數傳遞
本質:傳遞的是引用
傳遞不可變對象:
python07_函數
如果參數是不可變對象,a和x之間相互獨立,對x的操作不會影響引用a
傳遞可變對象:
python07_函數
如果傳遞的是可變對象,那麼改變函數參數,有可能改變原對象
注意:
如果是傳遞可變對象,在定義參數時,儘量避免參數的默認值設置成一個可變對象

6)變量作用域
定義:變量起作用的範圍,所有變量的作用域是它們被定義的塊,從它們的名稱被定義的那點開始
分類:
1.局部變量
2.全局變量
3.內建變量

global語句:爲一個定義在函數外的變量賦值,在函數內使用
python07_函數
使用global語句可以清楚表明變量是在外面的塊定義的
global語句被用來聲明變量是全局的

命名空間:python使用命名空間記錄變量,python中的命名空間就像是一個dict,key是變量的名字,value是變量的值

變量名解析:LEGB原則
LEGB作用域查找原則,當引用一個變量時,python按照以下順序依次查找:
python07_函數
第一個能夠完成查找的就算成功
變量在代碼中被賦值的位置通常就決定了它的作用域

查看變量:
locals()和globals()
python07_函數

7)文檔註釋
分類:單行註釋、多行註釋、特殊註釋
特殊註釋:
#!/usr/bin/env python
python告訴Linux去哪個路徑下找python的翻譯器
#--coding:utf-8--
告訴python解釋器,如何解釋字符串中的編碼類型

文檔字符串是包、模塊、類或函數裏的第一個用三引號引起來的字符串

PS:
元組:a = (1,2,3...)
列表:b = [1,2,3...]
字典:c = {'x':1,'y':2}

sorted 排序函數
python07_函數

8)內建函數與工廠函數
函數與方法:
函數是大家的函數,方法是類的方法
與類和實例無綁定關係的function都屬於函數(function)
與類和實例有綁定關係的function都屬於方法(method)

內建:python已經建立好的,無需導入,直接調用
內建函數:pythonyi已經建好的函數
內建方法:一般是針對面向對象而言,是類的方法
內建方法就是指一個自帶的對象所帶的方法。如list的pop操作

工廠函數:指這些內建函數都是類對象,它們看上去像函數,實質上是類,當你調用它們時,實際上是生成了該類型的一個實例,就像工廠生產貨物一樣。
工廠函數主要與數據類型相關
int(), float(), complex(), bool()
str(), bytes() : 字符型
list(), tuple():生成列表或者元組
dict(), set():生成一個字典或集合
slice():切片

常用內建函數:
• input()、print():輸入輸出函數
• oct()、hex():轉換函數
• chr()、ord():ASCII與字符轉換
• abs(num)、pow()、round():數值運算函數
• isinstance():判斷是不是實例
• id():求內存地址
• len():求長度
• sum():求和
• max():最大值
• min():最小值
• enumerate(iter) :接受一個可迭代對象作爲參數,返回一個enumerate 對象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章