python中函數的定義與調用


在前面的學習中,其實我們已經接觸到了一些函數,比如:

type() 函數能返回數據的類型

len() 函數能返回數據的長度

print() 函數能在控制台將內容輸出出來

range() 函數能生成整數數列

這些函數都是python的內置函數,我們可以直接調用,后面我們將會接觸到更多的python的內置函數。通過觀察,我們不難發現,函數有以下兩個特點:

  • 可以具體完成某個功能
  • 可以重復使用

一、python中函數的定義

除了python 內置函數外,我們還可以根據需求自定義函數,函數的定義有以下規則:

  • 使用關鍵字def 來向python發出信號,標識你要定義一個函數;
  • def 后跟具體的函數名稱,注意,自定義函數的名稱最好不要跟內置函數名稱發生沖突;
  • 函數名稱后跟一對圓括號,圓括號內存放調用該函數時需要傳入的參數;
  • 在函數體內,我們可以使用 一對 三引號 來定義文檔字符串,這就相當於是給函數加了一段注釋,說明該函數的具體作用;
  • 函數一般以return 結束,用來返回值方便調用,如果沒有return語句,則默認返回None;
  • 函數遇到return就會終止,即return后面的代碼將不會被執行。

1、函數的語法:

 舉一個比較簡單的例子:

 2、函數的調用

二、函數中的參數

1、形式參數和實際參數

  • 形式參數:函數定義時候的參數
  • 實際參數:函數調用時候的參數

2、函數的位置參數

  • 位置參數:形式參數和實際參數要一一按照順序對應,不多不少,位置一樣。

 關於函數的參數傳遞,我們需要注意如下幾點:

  • 調用函數傳遞的參數個數一定要和函數定義的參數個數一致,否則會報錯;
  • 注意函數體里面參數的類型,要輸入正確的參數類型,否則會報錯。

3、函數的默認參數

  • 在函數定義的時候,給形式參數一個默認值,即為默認參數;
  • 在函數定義時,如果有默認值,在調用時如果傳入了實際參數,那么默認參數不會生效,如果沒有傳入實際參數,默認參數會生效。

 4、位置參數與默認參數

一個函數有的時候不僅有位置參數,還會有默認參數,如果這兩種參數同時存在的時候,就一定要把默認參數放在位置參數的后面,否則會報錯!!

 5、關鍵字參數

  • 作用:是相對於位置參數講的,可以提高函數調用時候的可讀性,更加容易理解實際參數的意義;
  • 關鍵字的名字===形式參數;
  • 關鍵字參數區別位置參數,可以不按照順序進行調用,可以交換順序;
  • 關鍵字參數也要放到位置參數的后面。

6、不定長參數

不定長參數包括位置不定長參數和關鍵字不定長參數:

  • *args:位置不定長參數;
  • *kwargs:關鍵字不定長參數

 (1)位置不定長參數:*args

  • *args:在函數內部的表現形式:names是一個元組
  • *args:可以接收從函數調用的時候多余的位置參數
  • *args:加在其他位置參數的后面

(2)關鍵字不定長參數:*kwargs

上面我們講了不定長位置參數,這一節我們來掌握下帶有關鍵字的不定長參數。它與普通的不定長參數的區別就是帶有關鍵字,且必須指定關鍵字,否則識別不了。

 三、局部變量和全局變量

1、定義

  • 局部變量是在函數內部聲明的變量,只能在該函數調用它,如果試圖在超出范圍的地方調用,程序就會報錯;
  • 全局變量是在整個整個py文件中定義的變量,全局范圍內都可以訪問。

2、局部變量和全局變量需要注意的幾個點

  • 全局作用域能獲取局部變量嗎??? 不能!!!
  • 全局作用域能修改局部變量嗎??不能!!!
  • 局部作用域能獲取全局變量嗎??能!!!  
  • 局部變量能修改全局變量嗎??不能!!!

 3、局部作用域修改全局變量的方法

  • global 關鍵字是聲明全局變量的關鍵字

 返回的結果是:27

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM