日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python程序开发——第五章 函数

發布時間:2024/2/28 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python程序开发——第五章 函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 一、函數的定義
    • (一)def關鍵字定義函數
    • (二)形參和實參
    • (三)全局變量和局部變量
  • 二、函數的調用
  • 三、函數的參數傳遞
    • (一)必需參數
    • (二)關鍵字參數
    • (三)默認參數
    • (四)不定長參數
    • 1、元組形式導入(*)
    • 2、字典形式導入(**)
  • 四、匿名函數
  • 五、遞歸函數


一、函數的定義

函數,也就是為了提高代碼復用性、降低代碼冗余的一種方式,將功能代碼定義為一個函數。

(一)def關鍵字定義函數

通過關鍵字def來定義函數,函數要有函數名和參數以及函數體等等。
def后跟函數名和圓括號(),括號內是參數(參數也可以為空,此時則稱該函數為無參函數),且函數內容以冒號:來表示這個函數的起始。
函數內的內容,也就是函數體,它是實現函數具體功能的代碼。
另外還有return語句,它用于將函數的處理結果返回給調用該函數一方或者退出函數,若函數沒有返回值,則不需要加上return語句,即相當于返回none。

def 函數名 (參數或參數列表):函數體[return 語句]

(二)形參和實參

形參,即形式參數,可以說它是虛擬變量,而實參,即實際參數,即調用函數時傳入的參數。
形參的目的是接收實參,被調用時分配內存單元,實參賦值給形參, 調用結束后, 形參釋放所分配的內存單元 。注意實參是以按地址傳遞方式將值傳遞給形參,即實參的地址傳遞給形參,實際上實參是程序中使用的參數。

(三)全局變量和局部變量

簡單的來說,局部變量是在函數內定義的變量,只能在定義它的函數中使用;而全局變量,是定義在函數之外的變量,它可以在程序的任何位置使用。
在函數中只能訪問全局變量,但不能修改全局變量,若要在函數內部修改全局變量的值,則需在函數中通過global關鍵字聲明。
例如下列python代碼,在fein()函數中修改全局變量a,首先要對它該變量使用global關鍵字聲明:

a = 1 def fein():global a#通過global關鍵字聲明全局變量a *= 2print(a)fein()#調用fein()函數

運行結果如下:

二、函數的調用

通過函數名(參數或參數列表)來調用函數。
下列python代碼,input_number()函數是個無參函數,它通過input_number()來調用該函數,number_max()函數帶有三個參數,在調用number_max()時向該函數傳入了三個實參,該函數的功能是輸出傳入的參數:

def input_number():print("這是一個無參函數。") def number_max(x, y, z):print(x, y, z)input_number() number_max(3, 0, 1)

運行結果如下:

三、函數的參數傳遞

根據實參傳遞給形參的方式,可分為必需參數、關鍵字參數、默認參數和不定長參數。

(一)必需參數

必需參數,即將實參按照位置順序傳遞給形參。
如下python代碼,div()函數中的實際參數和形式參數有相應的位置關系,分別傳遞給不同的形參:

def div(num1, num2, num3):print(num3 + num1 - num2) div(3,2,9) def content_input(content):print(content)content_input("內容。。。")

運行結果如下:

(二)關鍵字參數

可以通過形參=實參的形式,根據形參的名稱進行傳遞。
如下python代碼:

def info(name, sex, age):print(f"名字:{name}")print(f"性別:{sex}")print(f"年齡:{age}")info(name="xiaoming", sex="男", age=18)

運行結果如下:

(三)默認參數

在調用函數時,若沒有傳遞值給形參參數,則會使用默認參數,即參數的默認值。若對帶有默認值的形參傳遞,則實參的值會覆蓋設置的默認值。
另外函數中,調用默認參數應放在其它實參后。
例如下列python代碼:

def info(name, sex, age, garde=1):print("名字: ", name)print("性別: ", sex)print("年齡: ", age)print("年級: ", garde)info(name="xiaoming", sex="男", age=18)

調用該函數時,由于未給garde傳參,形式參數garde使用默認值1,運行結果如下:

若形式參數garde使用傳入值,則會覆蓋設置的默認參數,python代碼如下:

def info(name, sex, age, garde=1):print(f"名字:{name}")print(f"性別:{sex}")print(f"年齡:{age}")print(f"年級:{garde}")info(name="xiaoming", sex="男", age=18, garde=2)

運行結果如下,輸出的年級garde值為1,默認值garde=1被覆蓋:

(四)不定長參數

當調用函數時,傳入的參數不確定時,就可使用不定長參數,它可處理比聲明時更多的參數。

1、元組形式導入(*)

在創建函數時,將參數前面加上*,加上*號的參數被接收后會以元組的形式導入。
下列python代碼,調用函數時2傳遞給the_one形參,后面的3……都被傳遞給the_else形參:

def f(the_one, *the_else):print(the_one)print(the_else)f(2, 3, "s", "t", 0, "c")

運行結果如下:

2、字典形式導入(**)

在創建函數時,將參數前面加上**,加上**號的參數被接收后會以字典的形式導入。
下列python代碼,調用函數時2傳遞給the_else形參,后面的a=0……都被傳遞給the_else形參:

def f(the_one, **the_else):print(the_one)print(the_else)f(2, a=0, b=0.1, c=0.2)

運行結果如下:

四、匿名函數

通過使用lambda來創建匿名函數,它是一種無需定義函數名的函數,可以通過變量來記錄該函數。
相比普通函數,其只能是單個表達式,即lambda函數的語法中只包含一個語句,所以其功能比較單一且不能被其它程序使用。
下列python代碼,通過變量number_sum記錄該匿名函數:

number_sum = lambda a, b, h: (a + b) * h * 0.5 print(number_sum(2, 3, 1.5))

運行結果如下:

五、遞歸函數

遞歸函數,它可直接或間接地調用函數自身。其中函數遞歸時,要有遞歸公式和邊界條件,遞歸公式用于分解規模較大的問題為規模較小的問題,邊界條件用于終止遞歸函數。
例如下列python代碼:

def f(x):if x == 1:return 1else:return x + f(x - 1)print(f(4))

運行結果如下:

可以這樣理解,通過遞歸依次求得f(x-1)的值,從而得到f(x)的值,如下圖:

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的Python程序开发——第五章 函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。