不定長引數
返回值函式的作用域
在呼叫函式時,大多數情況下,主調函式和被呼叫函式之間有資料傳遞關係,這就是有引數的函式形式。函式引數的作用是傳遞資料給函式使用,函式利用接收的資料進行具體操作處理。
在使用函式時,經常會用到形式引數和實際引數。兩者都叫作引數,二者之間的區別將先通過形式引數與實際引數的作用來進行說明。
作用理解
形式引數和實際引數在作用上的區別:
- 形式引數:在定義函式時,函式名後面括號中的引數為「形式引數」。
- 實際引數:在呼叫乙個函式時,函式名後面括號中的引數為「實際引數」。也就是將函式的呼叫者提供給函式的引數稱為實際引數。
根據實際引數的型別不同,可以將實際引數的值傳遞給形式引數,或者將實際引數的引用傳遞給形式引數。其中,當實際引數為不可變物件時,進行的是值傳遞;當實際引數為可變物件時,進行的是引用傳遞。實際上,值傳遞和引用傳遞的基本區別就是,進行值傳遞後,改變形式引數的值,實際引數的值不變;而進行引用傳遞後,改變形式引數的值,實際引數的值也會變。
呼叫函式時,解析器不會檢查實參的型別
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 其中類是某一批物件的抽象,可以把...
第十三天 練兵
問 昨天您講的很驚心動魄。這樣快節奏的配合確實非常完美,很羨慕。但要形成這樣的結果必須我們之間配合需要非常流暢,我們有什麼方法可以促成這樣的氛圍?答 練兵。如果一開始就進入業務系統功能的設計開發,業務組長對業務還沒有很深的吃透,這樣倉促上陣功能不但連上一版不如,而且為了補課,軟體不斷修改,什麼都亂了...