第十三天 Python 函式 引數傳遞

2021-10-25 10:05:01 字數 2112 閱讀 4536

不定長引數

返回值函式的作用域

在呼叫函式時,大多數情況下,主調函式和被呼叫函式之間有資料傳遞關係,這就是有引數的函式形式。函式引數的作用是傳遞資料給函式使用,函式利用接收的資料進行具體操作處理。

在使用函式時,經常會用到形式引數和實際引數。兩者都叫作引數,二者之間的區別將先通過形式引數與實際引數的作用來進行說明。

作用理解

形式引數和實際引數在作用上的區別:

- 形式引數:在定義函式時,函式名後面括號中的引數為「形式引數」。

- 實際引數:在呼叫乙個函式時,函式名後面括號中的引數為「實際引數」。也就是將函式的呼叫者提供給函式的引數稱為實際引數。

根據實際引數的型別不同,可以將實際引數的值傳遞給形式引數,或者將實際引數的引用傳遞給形式引數。其中,當實際引數為不可變物件時,進行的是值傳遞;當實際引數為可變物件時,進行的是引用傳遞。實際上,值傳遞和引用傳遞的基本區別就是,進行值傳遞後,改變形式引數的值,實際引數的值不變;而進行引用傳遞後,改變形式引數的值,實際引數的值也會變。

呼叫函式時,解析器不會檢查實參的型別

python自定義函式中有兩中不定長引數,第一種是*name,第二種是**name。加了星號 * 的引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。加了兩個星號 ** 的引數會以字典的形式匯入。

第一種形式的不定長引數,在傳入額外的引數時可以不用指明引數名,直接傳入引數值即可,第二種因為返回的是字典,所以傳入時需要指定引數名。

第一種*name:

*name 只接受位置引數

def fn(a, b, *c):

print(a)

print(b)

print(c)

fn(1, 2, 3, 5, 6, 7)

輸出如下:12

(3, 5, 6, 7)

第二種**name:

**name 可以接受其他關鍵字引數,它會將這些引數統一儲存到乙個字典中。

def fn(a, b, **args):

print(a)

print(b)

print(args)

fn(1, 2, l=3, m=4)

輸出結果如下:12

在python中,可以在函式體內使用return語句為函式指定返回值。該返回值可以是任意型別,並且無論return語句出現在函式的什麼位置,只要得到執行,就會直接結束函式的執行。

return語句的語法:

return [value]
引數說明:

return:為函式指定返回值後,在呼叫函式時,可以把它賦給乙個變數,用於儲存函式的返回結果。

value:可選引數,用於指定要返回的值,可以返回乙個值,也可以返回多個值。

變數的作用域是指程式**能夠訪問該變數的區域,如果超出該區域,再訪問時就會出現錯誤。在程式中,一般會根據變數的有效範圍將變數分為區域性變數和全域性變數。

python的作用域一共有4種,分別是:

l(local):區域性作用域,即函式中定義的變數;

e(enclosing):巢狀的父級函式的區域性作用域,即包含此函式的上級函式的區域性作用域,但不是全域性的;

g(global):全域性變數,就是模組級別定義的變數;

b(build-in):內建作用域,系統固定模組裡面的變數,比如:int()等;

宣告:global local nonlocal

區域性變數

區域性變數是指在函式內部定義並使用的變數,它只在函式內部有效,及函式內部的名字只在函式執行時才會建立,在函式執行之前或者執行完畢時候,所有的名字就都不存在了。所以,如果在函式外部使用函式內部定義的變數,就會出錯。

全域性變數

與區域性變數對應,全域性變數為能夠作用於函式內外的變數。全域性變數主要有兩種情況:

- 如果乙個變數在函式外定義,那麼不僅咋函式外可以訪問到,在函式內也可以訪問到。在函式體外定義的變數是全域性變數。

- 在函式體內定義,並且使用global關鍵字修飾後,該變數也就變為了全域性變數。在函式體外也可以訪問到該函式,並且在函式體內還可以對其進行修改。

學習Python 第十三天

二叉樹 一,名詞 根邊 樹葉 葉子 沒有兒子 兄弟 具有相同父親的節點 祖父和孫子 路徑路徑的長 深度 從根到該點 高 從該點到葉子 祖先 後裔 真祖先 真後裔 二,樹的實現 class treenode def init self,data,firstchild,nextsibling self....

PYTHON小白 第十三天

python小白 第十三天 1 類和物件 類是物件導向的重要內容,可以把類當成一種自定義型別,可以使用類來定義變數,也可以使用類來建立物件。1.1 定義類 在物件導向的程式設計過程中有兩個重要概念 類 class 和物件 object,也被稱為例項,instance 其中類是某一批物件的抽象,可以把...

第十三天 練兵

問 昨天您講的很驚心動魄。這樣快節奏的配合確實非常完美,很羨慕。但要形成這樣的結果必須我們之間配合需要非常流暢,我們有什麼方法可以促成這樣的氛圍?答 練兵。如果一開始就進入業務系統功能的設計開發,業務組長對業務還沒有很深的吃透,這樣倉促上陣功能不但連上一版不如,而且為了補課,軟體不斷修改,什麼都亂了...