實參與形參究竟有什么不同


你所熟知的各種編程語言,都有形參與實參這個概念,雖然不同語言對於形參和實參的要求是不同的,但他們存在的形式與意義卻是一致的。

對於許多初學者來說,形參與實參,着實難以區分和理解,這不怪你,因為計算機里的很多概念,的確是難以理解。我們對於日常生活中許多事物的理解,已經讓我們養成了思維上的習慣與定式,而這種定式放在計算機編程上,往往是失效的。原因在於,計算機里的許多概念,都是沒有實體的。

比如說,內存,你不能指着某樣東西說“看,這是內存”, 充其量,你拆開電腦,指着一塊硬件說“看,這是內存條”,然爾內存與內存條是兩個完全不同的事物。所以,我們要放棄自然科學中那種對事物進行精確定義和描述的習慣。

看下面這段代碼

def add(x, y): return x + y

x, y ,就是函數add的形參,形參這個概念,側重於函數的定義,這段代碼里,沒有實參,因為實參側重於函數的調用,看下面這段代碼

def add(x, y): return x + y add(3, 4)

3 和 4 就是調用函數add時傳入的實參,這句話強調了調用函數和傳入兩個動作,只有當這兩個動作發生時,才有實參的概念,或者說,實參的概念才有意義

那么,return x + y 這行代碼里,x 與 y 是實參,還是形參呢? 我個人的見解是,在函數里再去辨別他們已經沒什么意義,如果一定需要一個答案,那么,我認為它們是形參,而不是實參。實參,是一個只在函數調用時存在的概念,具體到函數內部執行時,我們已經不關心實參這個事情了。

如果你對變量作用域理解的不深刻,那么下面這段代碼很容易讓你困惑

x = 3 y = 4 def add(x, y): return x + y add(x, y)

現在再來看,return x + y 這行代碼里,x y 到底是實參還是形參?答案是形參。實參,不是一個具體的事物,它是一個概念,這個概念只在調用函數傳入參數時才有意義。

為什么要有形參和實參這兩個概念呢?形參,規定了函數的樣式,是一種形式的約定,強類型語言還會約定一個形參的類型。實參,是實際調用時傳入函數的數據,因此叫實參。

實參與形參,是兩個維度的事物,一個強調形式,一個強調實際數值,因此我說,他們是兩個維度的事物,形參是靜態的概念,實參是動態的概念,我執行add(3, 5), 函數的實參就是3, 5。下一次執行add(7, 8),那么函數的實參就是7和8,但形參始終都是x和y。

在函數內,形參的值,是由實參決定的,在函數執行之前,你不知道x 和 y 的值是什么,只有函數實際被執行,被調用,在函數內,你才知道形參的實際數值是什么。


免責聲明!

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



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