[2015-08-06] python017

Python函數基礎:

函數是Python爲了代碼最大程度地重用和最小化代碼冗餘而提供的基本程序結構
函數是一種設計工具,它能讓程序員將複雜的系統分解爲可管理的部件
函數用於將相關功能打包並參數化

在Python中可以創建4類函數:

  • 全局函數:定義在模塊中
  • 局部函數:嵌套於其他函數中
  • lambda函數:表達式(匿名函數)
  • 方法:與特定數據類型關聯的函數,並且只能與數據類型關聯一起使用

Python提供了很多內置函數:

語法格式:

def functionName(parameters):
    suite

一些相關概念:

  • def是一個可執行語句,因此可以出現在任何能夠使用語句的地方,甚至可以嵌套於其它語句,例如if或while中
  • def創建了一個對象並將其賦值給一個變量名(即函數名)
  • return用於返回結果對象,其爲可選;無return語句的函數自動返回None對象,返回多個值時,彼此間使用逗號分隔,且組合爲元組形式返回一個對象
  • def語句運行之後,可以在程序中通過函數後附加括號進行調用

名稱空間:變量作用域

  • Python創建、改變或查找變量名都是在名稱空間中進行
  • 在代碼中變量名被賦值的位置決定了其能被訪問到的範圍
  • 函數定義了本地作用域,而模塊定義了全局作用域
  • 每個模塊都是一個全局作用域,因此,全局作用域的範圍僅限於單個程序文件
  • 每次對函數的調用都會創建一個新的本地作用域,賦值的變量除非聲明爲全局變量,否則均爲本地變量
  • 所有的變量名都可以歸納爲本地、全局或內置的(由_ _ builtin _ _ 模塊提供)
  • 變量名解析:LEGB原則
    變量名引用分三個作用域進行:
    首先是本地、之後是函數內,接着是全局,最後是內置

參數匹配模型:

  • 默認情況下,參數通過其位置進行傳遞,從左至右,這意味着,必須精確地傳遞和函數頭部參數一樣多的參數
  • 但也可以通過關鍵字參數、默認參數或參數容器等改變這種機制

參數傳遞形式:

  • 位置參數:從左向右
  • 關鍵字參數:按關鍵名稱匹配,使用“name=value”的語法通過參數名進行匹配
    • 混用上面兩種方式時:所有位置參數在前,所有的關鍵字參數在後
  • 默認參數:定義函數時使用“namevalue”的語法直接給變量一個值,從而傳入的值可以少於參數個數
    • 混用有默認和無默認值的參數時,無默認值放前面
  • 可變參數:定義函數時使用*開頭的參數,可用於手機任意多基於位置或關鍵字的參數
    • 定義函數時使用*:收到位置參數
    • 定義函數時使用**:收集關鍵字參數
  • 可變參數解包:調用函數時,使用*開頭的參數,可用於將參數集合打散,從而傳遞任意多基於位置或關鍵字的參數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章