python基礎6
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