函數:是指實現某個功能的一段代碼
使用函數的好處:
1.模塊化程序設計
2.減小代碼冗餘
3.維護方便python
函數的格式:
ide
1)函數參數
定義:函數取得的參數是你提供給函數的值
參數分爲:
形參:參數名稱
實參:提供給函數調用的值
注意:形參和實參能夠同名,但不必定是同一個對象,也能夠不一樣名模塊化
分類:
1.按定義
必選參數-----在調用時必需要填
默認參數-----提供默認值,調用時可不填
可變長位置參數(*args)
可變長關鍵字參數(**args)函數
ps:函數至關於打包,*args和**args至關於拆包
編碼
2.按調用
位置參數----按參數順序依次傳遞
關鍵字參數----按key依次傳遞
注意:若函數裏兩種參數都有,關鍵字參數要放在位置參數的後面,如 userinfo(18,"female",name="han")翻譯
參數定義的最佳方式:mysun(必選參數,*args,默認參數,**args)設計
參數的調用:mysun(位置參數,關鍵字參數)3d
2)函數return語句
做用:用來退出函數,函數遇到return就結束執行,函數默認返回None
對象
3)匿名函數
定義:沒有名字的函數,只能有一個表達式,不用寫return
格式:
注意:
匿名函數能夠設置默認參數,可變長參數
當函數只是實現簡單且一次性使用時,可定義爲匿名函數
把匿名函數做爲返回值返回
blog
4)遞歸函數
定義:在函數的定義中使用函數自身的方法
實現遞歸的條件:
出口條件,即遞歸「何時結束」,一般在遞歸函數的開始就寫好
注意:
若是可使用普通函數解決,儘可能不要用遞歸,數據存放到堆棧中,遞歸次數多,會致使內存的消耗比較大
5)函數的參數傳遞
本質:傳遞的是引用
傳遞不可變對象:
若是參數是不可變對象,a和x之間相互獨立,對x的操做不會影響引用a
傳遞可變對象:
若是傳遞的是可變對象,那麼改變函數參數,有可能改變原對象
注意:
若是是傳遞可變對象,在定義參數時,儘可能避免參數的默認值設置成一個可變對象
6)變量做用域
定義:變量起做用的範圍,全部變量的做用域是它們被定義的塊,從它們的名稱被定義的那點開始
分類:
1.局部變量
2.全局變量
3.內建變量
global語句:爲一個定義在函數外的變量賦值,在函數內使用
使用global語句能夠清楚代表變量是在外面的塊定義的
global語句被用來聲明變量是全局的
命名空間:python使用命名空間記錄變量,python中的命名空間就像是一個dict,key是變量的名字,value是變量的值
變量名解析:LEGB原則
LEGB做用域查找原則,當引用一個變量時,python按照如下順序依次查找:
第一個可以完成查找的就算成功
變量在代碼中被賦值的位置一般就決定了它的做用域
查看變量:
locals()和globals()
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 排序函數
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 對象