1. 程式人生 > >python基礎6

python基礎6

形參和實參 定義 分配內存 python基礎 必須 引用 不可變類 函數 在外

python函數

一、函數的參數

1、函數的參數從調用的角度來講可以分為形式參數和實際參數,也可叫形參和實參。

   形參:變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變量

   實參:可以是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值

  2、位置參數:按照從左到右的順序依次定義的參數

    註:按位置定義的形參必須被傳值,多一個不行,少一個不行。

      按位置定義的實參,與形參一一對應

  3、關鍵字參數:在傳入實參時指定形參的變量名(實參在定義時,按照key=value形式定義)

   註意的問題一:位置實參必須在關鍵字實參的前面。
註意的問題二:實參的形式既可以用位置實參又可以是關鍵字實參,但是一個形參不能重復傳值。

  4、默認參數:定義函數階段,就已經為形參賦值,定義階段有值,調用階段可以不用傳值。

    默認參數需要註意:

         問題一:必須放在位置參數和形參後面
         問題二:默認參數通常要定義成不可變類型
         問題三:默認參數只在定義階段被賦值一次

  5、可變成參數(收集參數):可變長指的是實參的個數不固定

    按位置定義的可變長度的實參:* (*定義成的實參是元祖形式)
    按關鍵字定義的可變長度的實參:** (**定義成的實參是字典形式)
   註:*和**既可以“打包”又可以“解包”。

   註:函數必須遵守先定義後使用的原則,定義階段是只檢測語法不執行代碼,執行階段是執行代碼。

二、函數的返回值(return)

  1、return返回值沒有的情況下返回None.

  2、return可以返回任意類型的值。

  3、return只能返回一次值,其作用是終止函數的執行。

三、名稱空間(即就是存放名字與值得綁定關系)。

  1、名稱空間分為三類,分別是內置名稱空間,全局名稱空間和局部名稱空間。

  2、內置名稱空間:python解釋器自帶的名稱,默認python解釋器啟動就會執行。

  3、全局名稱空間:文件級別的名字都會存放在全局名稱空間中,執行python文件時會產生。

  4、局部名稱空間:定義在函數內部的名稱,局部名稱空間只有在函數調用時才會生效,停止調用就會失效。

  5、三者的加載順序:內置名稱空間》》全局名稱空間》》局部名稱空間

  6、三者的取值順序:局部名稱空間》》全局名稱空間》》內置名稱空間

四、函數變量的作用域(全局變量作用域和局部變量作用域)

   1、全局作用域:內置名稱空間與全局名稱空間的名字屬於全局範圍,在整個文件的任意位置都能被引用,全局有效(也就是說代碼內所有的函數內部都可以訪問到全局變量)。
   2、局部作用域:局部名稱空間的名字屬於局部範圍,只在函數內部可以被引用,局部有效

五、函數的嵌套

  1、函數內部創建另一個函數,這種函數叫做內嵌函數或者是嵌套函數。 

  2、內部函數整個作用域都在外部函數之內。


六、函數對象

  1、函數是第一類對象: 指的是函數可以被當做數據傳遞

  2、函數可以被引用,可以當作函數的參數,可以當作函數的返回值,可以當作容器類型的元素,

  

    

    

python基礎6