函數(shù)參數(shù)傳遞機制問題在本質上是調用函數(shù)(過程)和被調用函數(shù)(過程)在調用發(fā)生時進行通信的方法問題?;镜膮?shù)傳遞機制有兩
10年積累的成都網站設計、網站建設經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站設計后付款的網站建設流程,更有泗陽免費網站建設讓你可以放心的選擇與我們合作。
種:值傳遞和引用傳遞。
推薦:Python教程
值傳遞(passl-by-value)過程中,被調函數(shù)的形式參數(shù)作為被調函數(shù)的局部變量處理,即在堆棧中開辟了內存空間以存放由主調函數(shù)放
進來的實參的值,從而成為了實參的一個副本。值傳遞的特點是被調函數(shù)對形式參數(shù)的任何操作都是作為局部變量進行,不會影響主調函
數(shù)的實參變量的值。
引用傳遞(pass-by-reference)過程中,被調函數(shù)的形式參數(shù)雖然也作為局部變量在堆棧中開辟了內存空間,但是這時存放的是由主調函
數(shù)放進來的實參變量的地址。被調函數(shù)對形參的任何操作都被處理成間接尋址,即通過堆棧中存放的地址訪問主調函數(shù)中的實參變量。正
因為如此,被調函數(shù)對形參做的任何操作都影響了主調函數(shù)中的實參變量。
更多技術請關注Python視頻教程。
python的函數(shù)參數(shù)傳遞是"引用傳遞(地址傳遞)"。
python中賦值語句的過程(x = 1):先申請一段內存分配給一個整型對象來存儲數(shù)據(jù)1,然后讓變量x去指向這個對象,實際上就是指向這段內存(這里有點和C語言中的指針類似)。
在Python中,會為每個層次生成一個符號表,里層能調用外層中的變量,而外層不能調用里層中的變量,并且當外層和里層有同名變量時,外層變量會被里層變量屏蔽掉。函數(shù)? 調用 ?會為函數(shù)局部變量生成一個新的符號表。
局部變量:作用于該函數(shù)內部,一旦函數(shù)執(zhí)行完成,該變量就被回收。
全局變量:它是在函數(shù)外部定義的,作用域是整個文件。全局變量可以直接在函數(shù)里面應用,但是如果要在函數(shù)內部改變全局變量,必須使用global關鍵字進行聲明。
注意 :默認值在函數(shù)? 定義 ?作用域被解析
在定義函數(shù)時,就已經執(zhí)行力它的局部變量
python中不可變類型是共享內存地址的:把相同的兩個不可變類型數(shù)據(jù)賦給兩個不同變量a,b,a,b在內存中的地址是一樣的。
上一期我們學習參數(shù)傳遞怎么傳遞,也了解了參數(shù)的幾種類型。
首先,我們再來回顧一下,形參和實參:
形參是在定義函數(shù)時定義的,放在函數(shù)名后面的圓括號里,可為空
實參是調用函數(shù)時為形參傳入具體的參數(shù)值
簡單總結一下,誰調用函數(shù),誰就負責傳入參數(shù)。
好吶,本期我們來詳細學習函數(shù)幾種參數(shù)類型,大綱如下:
python函數(shù)的參數(shù)名是無意義的,Python允許在調用函數(shù)時通過通過名字來傳入參數(shù)值。
位置參數(shù):按照形參位置傳入的參數(shù)
調用函數(shù)時,實參默認按位置順序傳遞的。同時實參個數(shù)也要和形參匹配
舉一個小栗子
如果實參的個數(shù)與形參不匹配時,調用函數(shù)運行就會報錯
Python中,形參與調用函數(shù)緊密聯(lián)系在一起的。
關鍵字參數(shù):調用函數(shù)時,使形參名稱來傳遞參數(shù),形式為“形參名=實參”
關鍵字參數(shù),又叫命名參數(shù),傳遞時無需考慮參數(shù)位置和順序
舉一個小栗子
默認參數(shù):定義函數(shù)時,我們可以為形參提前設置具體的值。
在定義函數(shù)時,默認參數(shù)要放到位置等其他參數(shù)后面
在調用函數(shù)時,默認參數(shù)是可選的。如果傳入新值,則會覆蓋默認值
舉一個小栗子
注意,默認值不能位于位置參數(shù)前面,否則程序會報錯誤
不定長參數(shù)又名可變參數(shù)。
不定長參數(shù)指的是可變數(shù)量的參數(shù),分兩種情況:
如果不定長參數(shù)后面,可以新增參數(shù)嗎?
我們通過例子來看,會發(fā)生什么?
運行上面的程序,Python解釋器會報錯
原因是,形參a已經是不定長參數(shù),我們調用的test(2,3,4)傳入的三個實參,系統(tǒng)自動把它們屬于形參a的值,形參b 和形參c就等于沒有值傳入,這時候系統(tǒng)就認為,調用函數(shù)的對象,參數(shù)沒有傳夠。
為了解決這一報錯,python引入了 強制命名參數(shù)
規(guī)定,調用不定參數(shù)后面有跟位置參數(shù)的函數(shù)時,傳入給位置參數(shù)時,必須要強制命名參進行傳參。
逆向參數(shù)收集針對的對象傳入函數(shù)的實參
調用函數(shù)時,如果實參是元組,列表或者字典,通過在實參前面加入星號,可以自動把元素進行隔開,然后再轉入給函數(shù)進行處理
舉一個小栗子
本期,我們詳細學習了參數(shù)幾種類型,為后面我們學習函數(shù),打好基礎。
實踐是檢驗真理的過程,大家多動手練習練習,會有不一樣的奇妙旅程~
好吶,以上是本期內容,歡迎大佬們評論區(qū)指正~
Python 的函數(shù)傳遞參數(shù):
Python 傳參數(shù)可以理解為 C 的 const 指針(your_type* const your_variable),它所指向的對象可以被修改產生副作用,但變量本身不能修改指向其他對象。這個和 C++ 的 reference 差不多。
所以如果一定要產生 C 的修改指針指向其他對象的效果,用 list、dict 或其他自定義的 mutable 對象包裝是一個辦法,但我認為這樣是一種不良實踐。在 C 語言中用參數(shù)輸出結果有非常多的理由:
C 語言沒有 tuple,不能返回多值,除非聲明一個 struct 類型。這種情況下劃分 in 參數(shù)和 out 參數(shù)成為一種慣例
C 語言沒有異常機制,返回值一般要保留給 errno
但這些情況在 Python 中都是不存在的
分享題目:java算法代碼路徑,java最短路徑算法代碼
當前地址:http://chinadenli.net/article2/hohsic.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、軟件開發(fā)、網站內鏈、移動網站建設、網站維護、網站改版
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)