python中的函式 函式定義 函式引數和函式呼叫

2021-10-02 18:08:06 字數 2852 閱讀 4690

我們在程式設計過程中經常會遇到同樣功能的**不斷地出現,使得程式設計成為枯燥無味的複製貼上過程的迴圈。為了找樂子 讓**變得精簡。我們需要函式來幫助我們。

函式就是完成特定功能的**塊,本質上是對**的封裝。

函式的語法格式為:

def 函式名(引數)

: **段 # 函式體

需要注意的是,函式名的命名規則與變數的命名規則一致。

函式名以數字、字母和下劃線組成,不能以數字開頭,不能與系統關鍵字重名,區分大小寫。

函式名最好不要跟系統函式重名,否則,系統函式會被覆蓋。

形參就是函式定義時小括號裡的變數,實參就是函式呼叫的時候小括號裡的表示式。例如,

def

add(a, b)

:return a + b

res = add(3,

5)

上面這段**中a和b就是函式add()的形參,而3和5就是函式add()的實參。

注意:函式可以沒有實參和形參。

def

hello()

:print

("hello world"

)hello(

)

執行結果如下:

hello world
這個hello()函式是沒有形參的,同時在函式呼叫時,我們也無需給hello()函式實參。

2.2.1.位置引數

位置引數是python函式中最常用到的引數之一。位置引數要求實參順序必須和形參順序完全一致,並且一一對應。例如:

def

intro

(name, age)

:print

("我是{},今年{}歲了。"

.format

(name, age)

)intro(

"小明",18

)

執行結果如下:

我是小明,今年18歲了。
這個函式中name對應"小明",age對應18。如果顛倒過來就與函式本意不一致了。

2.2.2.關鍵字引數

與位置引數不同,關鍵字引數不要求實參與形參順序一致。函式呼叫時,實參以鍵值對的形式書寫,其中鍵是形參名。例如:

def

intro

(name, age)

:print

("我是{},今年{}歲了。"

.format

(name, age)

)intro(age=

18, name=

"小明"

)

執行結果如下:

我是小明,今年18歲了。
2.2.3.預設值

如果在函式定義時給形參乙個預設值,那麼在函式呼叫時,就可以不給這個形參傳值,可以簡化呼叫。例如:

def

intro

(name, ***, age=20)

:print

(name, ***, age)

intro(

'tom'

,'男'

)intro(

'tom'

,'男',25

)

執行結果如下:

tom 男 20

tom 男 25

可以看到,如果我們不給age形參傳值,age會預設為20。如果我們給age傳值,age會使用我們傳遞的數值。

注意:預設值引數必須放在最右邊,並且預設值最好是不可變物件並且只計算一次。

2.2.4.可變引數

有時我們無法確定函式所需的引數的數量,這個時候我們需要用到可變引數。

2.2.4.1.任意位置引數

任意位置引數可以接受任意數量的位置引數,並將其作為乙個元組來表示。

任意位置引數通過在函式名前加上"*"來表示。例如:

def

demo

(*args)

:print

(args)

demo(

)demo(1)

demo(1,

2)

執行結果如下:

()(

1,)(

1,2)

2.2.4.2.任意關鍵字引數

任意關鍵字引數可以接受任意數量的關鍵字引數,並將其作為乙個字典來表示。

任意位置引數通過在函式名前加上"**"來表示。例如:

def

demo6

(**kwargs)

:print

(kwargs)

demo6(

)demo6(a=1)

demo6(a=

1, b=

3)

執行結果如下:

2.2.5.引數的混合使用

位置引數、預設值和可變引數可以同時在函式定義**現。但是這些引數的混合使用要保證每乙個形參都必須有值於其對應

一般來說,我們以位置引數、任意位置引數、預設值和任意關鍵字引數這樣的順序進行排列。

函式呼叫是我們使用定義好的函式的過程。

這裡我們要區別好函式定義和函式呼叫。

函式定義是乙個靜態的過程,定義函式的**不會被執行。

函式呼叫是乙個動態的過程。函式呼叫會先在記憶體中分配形參的空間,然後會將形參指向實參,之後會執行函式定義中的**體,最後會返回計算結果並**形參。

python中full函式 Python函式混亂

我正在學習 python.我有乙個函式readwrite filename,list filename的型別為string.list是乙個包含要在檔案中重寫的字串的列表.我有乙個簡單的函式呼叫,如下所示 fname hello.txt readwrite xx fname,datalist 我面臨的...

python中ascii函式 ascii函式

python內建了乙個ascii函式,此函式的作用於repr函式和str函式基本相同,不同的是,ascii函式只能返回ascii字元,對於非ascii字元,它會使用 x,u等escape的方式進行轉義。repr函式呼叫物件的 repr 函式 str函式呼叫物件的 str 函式。而ascii函式其實也...

python函式都有啥 python中的函式有哪些

函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段。python中的函式有內建函式,也就是python自帶的 另一種是自定義函式,就是自己根據需要實現在的功能而建立的函式。函式能提高應用的模組性,和 的重複利用率。你已經知道python提供了許多內建函式,比如print 但你也可以自己建...