国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python中的形參和實參以及參數(shù)傳遞方式

這篇具有很好參考價值的文章主要介紹了python中的形參和實參以及參數(shù)傳遞方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1

在編程語言中,函數(shù)定義時用的是形參,調(diào)用時用的是實參。

形參,全稱為"形式參數(shù)",不是實際存在的變量,又稱虛擬變量。形參是在定義函數(shù)名和函數(shù)體的時候使用的參數(shù),目的是用來接收調(diào)用該函數(shù)時傳入的參數(shù)。

實參,全稱為"實際參數(shù)",是在調(diào)用時傳遞給函數(shù)的參數(shù)。實參可以是常量、變量、表達式、函數(shù)等。無論實參是何種類型的量,在進行函數(shù)調(diào)用時,它們都必須具有確定的值,以便把這些值傳送給形參。

形參和實參的功能是數(shù)據(jù)傳送。

2

調(diào)用函數(shù)時,實參將賦值給形參。必須注意實參的個數(shù)、類型應(yīng)與形參要一一對應(yīng),并且實參必須要有確定的值。形參的作用域一般僅限函數(shù)體內(nèi)部,而實參的作用域根據(jù)實際設(shè)置而定。

Python語言中提供了一種關(guān)鍵字參數(shù)的機制,可以給開發(fā)者提供更大的靈活性。如函數(shù)func()定義時形式參數(shù)的順序是func(x, y),但是調(diào)用時實際參數(shù)的順序可以是func(y = 1, x = 2)。

3

在函數(shù)調(diào)用中,實參的值被傳遞給函數(shù)的形參。這個過程確實涉及到將一個值賦給一個變量,因此可以看作是一種賦值操作。實參的值被賦給相應(yīng)的形參,使得函數(shù)在執(zhí)行時可以使用這些值。

然而,傳遞參數(shù)的過程與一般的賦值操作還有一些不同之處:

1形參和實參是獨立的變量:當(dāng)實參的值傳遞給形參時,它們在內(nèi)存中是獨立的變量。修改形參的值不會影響實參的值,因為它們是兩個不同的變量。

2傳遞方式:參數(shù)傳遞可以是按值傳遞(pass-by-value)或按引用傳遞(pass-by-reference),這取決于編程語言的特性。在按值傳遞的情況下,實參的值被復(fù)制到形參中,對形參的修改不會影響實參。而在按引用傳遞的情況下,實參的引用(地址)被傳遞給形參,對形參的修改會影響實參。

在Python中,實際上是按對象引用傳遞(pass-by-object-reference)的,而不是按引用傳遞。這意味著對象的引用被傳遞給函數(shù)的形參,形參和實參引用同一個對象。實參的引用被傳遞給形參,函數(shù)內(nèi)部可以通過形參來訪問和修改實參所引用的對象。當(dāng)傳遞可變對象(如列表或字典)時,對形參對象的修改會影響實參。但是當(dāng)傳遞不可變對象(如數(shù)字、字符串或元組)時,形參的修改不會影響實參,因為不可變對象是無法修改的。

注意,對可變對象的修改是指對可變對象的原地修改。

Python的參數(shù)引用機制被認為是其設(shè)計的亮點之一。

通過按對象引用傳遞參數(shù),Python能夠在函數(shù)調(diào)用過程中高效地處理對象,同時提供了靈活性和直觀性。以下是一些Python參數(shù)引用機制的優(yōu)點:

1對象共享:通過引用傳遞,多個變量可以引用相同的對象。這意味著可以節(jié)省內(nèi)存,并且對于可變對象,多個變量可以同時對其進行操作。

2不可變對象的安全性:對于不可變對象(如數(shù)字、字符串、元組),保證了其值不會被函數(shù)修改,從而避免了潛在的副作用。

3可變對象的直接修改:對于可變對象(如列表、字典),函數(shù)內(nèi)部對形參對象的修改會直接反映在實參上,無需使用返回值來獲取修改后的結(jié)果。

4函數(shù)副作用控制:由于參數(shù)傳遞是按對象引用傳遞的,函數(shù)可以通過修改可變對象來產(chǎn)生副作用,但對于不可變對象,函數(shù)無法修改實參的值。

4

參數(shù)分為可變類型和不可變類型,其調(diào)用結(jié)果是不同的。

(1)可變類型:類似c++的引用傳遞,如列表、字典等。如果傳遞的參數(shù)是可變類型,則在函數(shù)內(nèi)部對傳入?yún)?shù)的修改會影響到外部變量。

(2)不可變類型:類似c++的值傳遞,如整數(shù)、字符串、元組等。如果傳遞的參數(shù)是不可變類型,則在函數(shù)內(nèi)部對傳入?yún)?shù)的修改不會影響到外部變量。

5

可給每個形參指定默認值。

def enroll(name, gender, age='18', city='Beijing'):

定義時必選參數(shù)在前,默認參數(shù)在后。默認參數(shù)在調(diào)用時可省略。

默認參數(shù)必須指向不可變對象,否則可能會出現(xiàn)錯誤

def test_add(a=[]):
????a.append('END')
????return a



print(test_add([1, 2, 3]))
print(test_add(['a', 'b', 'c']))
print(test_add())
print(test_add())
print(test_add())



結(jié)果:

[1, 2, 3, 'END']
['a', 'b', 'c', 'END']
['END']
['END', 'END']
['END', 'END', 'END']

默認參數(shù)是空列表[],但是函數(shù)test_add()似乎每次都“記住了”上次添加了’END’后的list。這是因為在Python語言中,函數(shù)在定義的時候,默認參數(shù)的值就被計算出來了,它指向?qū)ο骩]。每次調(diào)用該函數(shù),如果改變了其內(nèi)容,則下次調(diào)用時,就不再是函數(shù)定義時的[]了。

開發(fā)者也可以用None這個不可變對象來解決錯誤,如下代碼所示。

def test_add(H=None):
????if H is None:
????????H = []
????H.append('END')
????return H


print(test_add())
print(test_add())

結(jié)果:
['END']
['END']

對于str、None等類似的不可變對象一旦創(chuàng)建,其內(nèi)部數(shù)據(jù)就不能修改,這樣就減少了由于修改數(shù)據(jù)導(dǎo)致的錯誤。此外,由于對象不變,多線程環(huán)境下同時讀取對象不需要加鎖,同時讀也沒有問題。開發(fā)者在編寫程序時,如果可以設(shè)計一個不可變對象,就盡量設(shè)計成不可變對象。

6

is 是一個用于比較對象身份的操作符。它用于檢查兩個對象是否引用同一個內(nèi)存位置,也就是它們是否是同一個對象。具體來說,當(dāng)使用 is 操作符時,它會檢查兩個對象的身份標識是否相同,而不是比較它們的值。如果兩個對象具有相同的身份標識,即它們引用同一個內(nèi)存地址,則 is 操作符返回 True。如果兩個對象的身份標識不同,則返回 False。

a = [1, 2, 3]
b = a
c = [1, 2, 3]


print(a is b) ?# 輸出 True,a和b引用同一個列表對象
print(a is c) ?# 輸出 False,a和c引用不同的列表對象

需要注意的是,is 操作符用于比較對象的身份標識,而 == 操作符用于比較對象的值。文章來源地址http://www.zghlxwxcb.cn/news/detail-785742.html

到了這里,關(guān)于python中的形參和實參以及參數(shù)傳遞方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java參數(shù)傳遞方式詳解

    Java中參數(shù)傳遞的方式是什么樣的呢?是值傳遞還是引用傳遞呢? 答案是值傳遞。 為什么呢? 先來了解一些基礎(chǔ)。。。。。 Java中參數(shù)傳遞方式是值傳遞,且只有值傳遞,沒有引用傳遞。 JavaGuide Java值傳遞詳解

    2024年02月07日
    瀏覽(23)
  • 第49講:Python函數(shù)調(diào)用解析:傳參方式、實參與形參關(guān)系、多返回值示例

    調(diào)用函數(shù)時,需要傳遞實際參數(shù)到函數(shù)里的形參中,可以根據(jù)每個形參在所有形參中的位置,從而傳遞實參到對應(yīng)位置的形參中。 位置實參指的就是,將實參作為變量值賦值給對應(yīng)位置的形參變量,例如第一個形參變量,調(diào)用函數(shù)時傳入的第一個實參就會賦值給函數(shù)中的第一

    2024年02月09日
    瀏覽(20)
  • Pytest fixture參數(shù)傳遞的4種方式

    最近使用Pytest中的fixture和conftest時,遇到需要在conftest中的setup和teardown方法里傳遞參數(shù)。這里記錄以下4種實現(xiàn)的方式。 結(jié)果: 結(jié)果: 結(jié)果:

    2024年02月16日
    瀏覽(19)
  • Python 中的 TypeError: an integer is required 錯誤通常是由于我們在代碼中使用整數(shù)(integer)參數(shù)的地方實際上傳遞

    Python 中的 TypeError: an integer is required 錯誤通常是由于我們在代碼中使用整數(shù)(integer)參數(shù)的地方實際上傳遞了非整數(shù)類型的參數(shù),例如字符串(string)或浮點數(shù)(float)。這個錯誤可以在編寫 Python 程序時遇到,但也可能是在編寫 Python 腳本時遇到。 下面是解決 TypeError: an i

    2024年02月15日
    瀏覽(33)
  • 小程序跨頁面?zhèn)鬟f參數(shù)的幾種方式

    當(dāng)我們在開發(fā)小程序時,經(jīng)常會遇到需要在不同頁面之間傳遞數(shù)據(jù)的情況。為了實現(xiàn)頁面間的數(shù)據(jù)傳遞,小程序提供了多種方法。下面將介紹幾種常用的傳遞數(shù)據(jù)的方法。 URL參數(shù)傳遞:這是一種簡單直接的傳遞數(shù)據(jù)的方式。在跳轉(zhuǎn)頁面時,可以在URL中添加參數(shù)來傳遞數(shù)據(jù)。在

    2024年02月08日
    瀏覽(33)
  • axios 傳遞參數(shù)的方式(data 與 params)

    axios 傳遞參數(shù)的方式(data 與 params)

    提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加 工作案例:在 vue 項目使用 axios 傳遞參數(shù)的方式(data 與 params) 提示:寫完文章后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 提示:這里可以添加本文要記錄的大概內(nèi)容: 工作中,用到的傳遞

    2024年04月17日
    瀏覽(16)
  • 若依框架前后端各個請求方式參數(shù)傳遞示例

    封裝方法getBanner getBanner方法調(diào)用(customerBannerId是一個數(shù)字) 后端接口(@PathVariable 注解取得請求路徑中的參數(shù),注意此處的三個參數(shù)名要一致) 封裝方法getBanner getBanner 方法調(diào)用(customerBannerId是一個對象,這里屬性名與屬性值一致,簡寫) 后端接口(前端傳遞的對象的屬性

    2024年02月03日
    瀏覽(16)
  • C++ 參數(shù)的三種傳遞方式和應(yīng)用參加

    C++ 參數(shù)的三種傳遞方式和應(yīng)用參加

    C++ 參數(shù)的三種傳遞方式分別是 值傳遞 、 指針傳遞 和 引用傳遞 。 值傳遞 值傳遞的實質(zhì) 將實參的值(a、b)復(fù)制到形參(m、n)相應(yīng)的存儲單元中,即形參和實參分別占用不同的存儲單元。 值傳遞的特點 值傳遞的特點是單向傳遞,即主調(diào)函數(shù)被調(diào)用時給形參分配存儲單元,把

    2024年02月08日
    瀏覽(20)
  • Controller 中的參數(shù)傳遞

    Controller 中的參數(shù)傳遞

    目錄 get請求 測試結(jié)果 基本數(shù)據(jù)類型與引用數(shù)據(jù)類型 自定義數(shù)據(jù)類型? ?json 數(shù)據(jù)類型 ?post 請求 測試結(jié)果 基本數(shù)據(jù)類型與引用數(shù)據(jù)類型 自定義數(shù)據(jù)類型 ?編輯?json 數(shù)據(jù)類型 ?put 請求 測試結(jié)果 基本數(shù)據(jù)類型和引用數(shù)據(jù)類型 ?自定義數(shù)據(jù)類型 ?json 數(shù)據(jù)類型 delete 請求 測試

    2024年02月12日
    瀏覽(15)
  • 【使用multipart/form-data方式傳遞MultipartFile參數(shù),實現(xiàn)服務(wù)間文件的傳遞】

    目錄 一、代碼實現(xiàn) 二、MultipartFile工具類 三、HttpClient使用 四、參考鏈接 一、代碼實現(xiàn) 1、A服務(wù)接收前端上傳文件并發(fā)送至B服務(wù) 引入依賴 使用MultipartFile接收前端文件 調(diào)取第三方接口,發(fā)送 MultipartFile 文件 2、B服務(wù)接收文件 二、MultipartFile工具類 簡介:MultipartFile是SpringMV

    2024年02月12日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包