在前面的學習中,其實咱們已經接觸到了一些函數,好比:
type() 函數能返回數據的類型python
len() 函數能返回數據的長度函數
print() 函數能在控制檯將內容輸出出來學習
range() 函數能生成整數數列spa
這些函數都是python的內置函數,咱們能夠直接調用,後面咱們將會接觸到更多的python的內置函數。經過觀察,咱們不難發現,函數有如下兩個特色:blog
1、python中函數的定義
除了python 內置函數外,咱們還能夠根據需求自定義函數,函數的定義有如下規則:內存
- 使用關鍵字def 來向python發出信號,標識你要定義一個函數;
- def 後跟具體的函數名稱,注意,自定義函數的名稱最好不要跟內置函數名稱發生衝突;
- 函數名稱後跟一對圓括號,圓括號內存放調用該函數時須要傳入的參數;
- 在函數體內,咱們可使用 一對 三引號 來定義文檔字符串,這就至關因而給函數加了一段註釋,說明該函數的具體做用;
- 函數通常以return 結束,用來返回值方便調用,若是沒有return語句,則默認返回None;
- 函數遇到return就會終止,即return後面的代碼將不會被執行。
一、函數的語法:作用域
舉一個比較簡單的例子:文檔
二、函數的調用
2、函數中的參數
一、形式參數和實際參數
- 形式參數:函數定義時候的參數
- 實際參數:函數調用時候的參數
二、函數的位置參數
- 位置參數:形式參數和實際參數要一一按照順序對應,很少很多,位置同樣。
關於函數的參數傳遞,咱們須要注意以下幾點:字符串
- 調用函數傳遞的參數個數必定要和函數定義的參數個數一致,不然會報錯;
- 注意函數體裏面參數的類型,要輸入正確的參數類型,不然會報錯。
三、函數的默認參數
- 在函數定義的時候,給形式參數一個默認值,即爲默認參數;
- 在函數定義時,若是有默認值,在調用時若是傳入了實際參數,那麼默認參數不會生效,若是沒有傳入實際參數,默認參數會生效。
四、位置參數與默認參數
一個函數有的時候不只有位置參數,還會有默認參數,若是這兩種參數同時存在的時候,就必定要把默認參數放在位置參數的後面,不然會報錯!!變量
五、關鍵字參數
- 做用:是相對於位置參數講的,能夠提升函數調用時候的可讀性,更加容易理解實際參數的意義;
- 關鍵字的名字===形式參數;
- 關鍵字參數區別位置參數,能夠不按照順序進行調用,能夠交換順序;
- 關鍵字參數也要放到位置參數的後面。
六、不定長參數
不定長參數包括位置不定長參數和關鍵字不定長參數:
- *args:位置不定長參數;
- *kwargs:關鍵字不定長參數
(1)位置不定長參數:*args
- *args:在函數內部的表現形式:names是一個元組
- *args:能夠接收從函數調用的時候多餘的位置參數
- *args:加在其餘位置參數的後面
(2)關鍵字不定長參數:*kwargs
上面咱們講了不定長位置參數,這一節咱們來掌握下帶有關鍵字的不定長參數。它與普通的不定長參數的區別就是帶有關鍵字,且必須指定關鍵字,不然識別不了。
3、局部變量和全局變量
一、定義
- 局部變量是在函數內部聲明的變量,只能在該函數調用它,若是試圖在超出範圍的地方調用,程序就會報錯;
- 全局變量是在整個整個py文件中定義的變量,全局範圍內均可以訪問。
二、局部變量和全局變量須要注意的幾個點
- 全局做用域能獲取局部變量嗎??? 不能!!!
- 全局做用域能修改局部變量嗎??不能!!!
- 局部做用域能獲取全局變量嗎??能!!!
- 局部變量能修改全局變量嗎??不能!!!
三、局部做用域修改全局變量的方法
返回的結果是:27