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

python是如何進行參數(shù)傳遞的?

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

在分析python的參數(shù)傳遞是如何進行的之前,我們需要先來了解一下,python變量和賦值的基本原理,這樣有助于我們更好的理解參數(shù)傳遞。

python變量以及賦值

  • 數(shù)值

從幾行代碼開始

In [1]: a = 1

In [2]: b = a

In [3]: a = a + 1

我們先將1賦值給a,也就是a指向了1這個對象,在python中一切皆對象。接著b=a,則表示讓b也指向了1這個對象,python中一個對象是可以被多個引用所指向。最后執(zhí)行的a=a+1,這里需要注意一點,python的數(shù)據(jù)類型中如int、str等不可變類型,執(zhí)a=a+1這種操作,并不是把a指向的對象的值增加1,而是生成一個新的對象2,并讓a指向2這個對象,原來的對象還存在于內(nèi)存中。那這里的話還是會被指向,我們來分別看一下a和b的值:

In [4]: a
Out[4]: 2

In [5]: b
Out[5]: 1

通過這個例子你可以看到,這里的 a 和 b,開始只是兩個指向同一個對象的變量而已,或者你也可以把它們想象成同一個對象的兩個名字。簡單的賦值 b = a,并不表示重新創(chuàng)建了新對象,只是讓同一個對象被多個變量指向或引用。同時,指向同一個對象,也并不意味著兩個變量就被綁定到了一起。如果你給其中一個變量重新賦值,并不會影響其他變量的值。

  • 列表

還有一個列表的例子,再來瞅瞅:

In [6]: l1 = [3,4,5,6]

In [7]: l2 = l1

In [10]: l1.append(7)

In [11]: l1
Out[11]: [3, 4, 5, 6, 7]

In [12]: l2
Out[12]: [3, 4, 5, 6, 7]

代碼中,我們讓l1和l2這兩個變量都指向了[3,4,5,6]這個對象,我們知道列表是一種可變的數(shù)據(jù)結(jié)構(gòu),所以append操作并不會產(chǎn)生新的對象,只是在末尾添加了一個元素,變成了[3, 4, 5, 6, 7],由于 l1 和 l2 同時指向這個列表,所以列表的變化會同時反映在 l1 和 l2 這兩個變量上,那么,l1 和 l2 的值就同時變?yōu)榱薣3, 4, 5, 6, 7]。

  • 對象刪除

python中變量是可以刪除的,但是對象是沒辦法刪除的

In [22]: a = [1,4,5]

In [23]: del a

del語句刪除a這個變量,就無法通過a訪問[1,4,5],但是這個對象在存在中還是存在的,python的垃圾回收機制發(fā)現(xiàn)引用為0的時候就會把它回收掉。

  • 總結(jié)
    • 變量的賦值,只是表示讓變量指向了某個對象,并不表示拷貝對象給變量;而一個對象,可以被多個變量所指向
    • 可變對象(列表,字典,集合等等)的改變,會影響所有指向該對象的變量
    • 對于不可變對象(字符串、整型、元組等等),所有指向該對象的變量的值總是一樣的,也不會改變。但是通過某些操作(+= 等等)更新不可變對象的值時,會返回一個新的對象
    • 變量可以被刪除,但是對象無法被刪除

python函數(shù)是如何進行參數(shù)傳遞的

python的參數(shù)傳遞是賦值傳遞或者說是引用傳遞,python里一切皆對象,所以參數(shù)傳遞時,只是讓新變量與原變量指向了同一個對象,下面我們來看個例子:

In [28]: def func(b):
    ...:     b = 2

In [29]: a = 1

In [30]: func(a)

In [31]: a
Out[31]: 1

這里的參數(shù)傳遞,使變量 a 和 b 同時指向了 1 這個對象。但當(dāng)我們執(zhí)行到 b = 2 時,系統(tǒng)會重新創(chuàng)建一個值為 2 的新對象,并讓 b 指向它;而 a 仍然指向 1 這個對象。所以,a 的值不變,仍然為 1。

如何改變a的值呢?

我們可以在函數(shù)中將b返回

def func(b):
    b = 2
    return b
a = 1
a = func(a)
a
2

上面的例子我們的是int類型的,下面我們看一下列表的例子:

def func(l2):
    l2.append(77)

l1 = [12,3,6]
func(l1)
l1
[12,3,6,77]

這里 l1 和 l2 先是同時指向值為[1, 2, 3]的列表。不過,由于列表可變,執(zhí)行 append() 函數(shù),對其末尾加入新元素 4 時,變量 l1 和 l2 的值也都隨之改變了.

那大家看一下面的例子,結(jié)果是什么呢?

def func(l2):
    l2 = l2 + [4]

l1 = [12,3,6]
func(l1)
l1
[12,3,6]

可以看到,l1沒有發(fā)生變化,原因是l2 + [4]這個操作表示創(chuàng)建了一個末尾加入元素 4的新列表,并讓 l2 指向這個新的對象,l1還是指向原有的對象。

總結(jié)

今天,我們討論了 Python 的變量及其賦值的基本原理,并且解釋了 Python 中參數(shù)是如何傳遞的。和其他語言不同的是,Python 中參數(shù)的傳遞既不是值傳遞,也不是引用傳遞,而是賦值傳遞,或者是叫對象的引用傳遞。需要注意的是,這里的賦值或?qū)ο蟮囊脗鬟f,不是指向一個具體的內(nèi)存地址,而是指向一個具體的對象。

python是如何進行參數(shù)傳遞的?,自動化測試,python,開發(fā)語言,自動化測試,接口測試,編程,職場和發(fā)展

?文章來源地址http://www.zghlxwxcb.cn/news/detail-629783.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)文章

  • python+appium+pytest自動化測試-參數(shù)化設(shè)置

    python+appium+pytest自動化測試-參數(shù)化設(shè)置

    來自APP Android端自動化測試初學(xué)者的筆記,寫的不對的地方大家多多指教哦。(所有內(nèi)容均以微博V10.11.2版本作為例子) 在自動化測試用例執(zhí)行過程中,經(jīng)常出現(xiàn)執(zhí)行相同的用例,但傳入不同的參數(shù),導(dǎo)致我們需要重復(fù)的寫用例,這樣會使我們的用例變得很長,冗余,很多地

    2023年04月08日
    瀏覽(24)
  • 什么是Selenium?如何使用Selenium進行自動化測試?

    什么是Selenium?如何使用Selenium進行自動化測試?

    ??Selenium 是一種開源工具,用于在 Web 瀏覽器上執(zhí)行自動化測試(使用任何 Web 瀏覽器進行 Web 應(yīng)用程序測試)。 ??等等,先別激動,讓我再次重申一下,Selenium 僅可以測試Web應(yīng)用程序。我們既不能使用 Selenium 測試任何桌面(軟件)應(yīng)用程序,也不能測試任何移動應(yīng)用程

    2024年02月02日
    瀏覽(31)
  • 基于k6和python進行自動化性能測試

    摘要: 在性能測試中,達到相應(yīng)的性能指標(biāo)對于一個軟件來說十分重要,在本文中,將介紹一種現(xiàn)代化性能測試工具k6。 本文分享自華為云社區(qū)《基于k6和python進行自動化性能測試》,作者: 風(fēng)做了云的夢。 當(dāng)我們開發(fā)完成一個應(yīng)用程序時,往往需要對其進行性能測試,以

    2024年02月10日
    瀏覽(23)
  • python+selenium進行cnblog的自動化登錄測試

    python+selenium進行cnblog的自動化登錄測試

    Web登錄測試是很常見的測試,手動測試大家再熟悉不過了,那如何進行自動化登錄測試呢!本文就基于python+selenium結(jié)合unittest單元測試框架來進行一次簡單但比較完整的cnblog自動化登錄測試,可提供點參考!下面就包括測試代碼和每種測試情況的截圖。 代碼如下: 測試結(jié)果如

    2024年02月16日
    瀏覽(19)
  • 【UI自動化測試技術(shù)】自動化測試研究:Python+Selenium+Pytest+Allure,詳解UI自動化測試,學(xué)習(xí)模擬鼠標(biāo)+模擬鍵盤進行相關(guān)操作(精)(四)

    1、了解元素交互的常用方法 2、學(xué)習(xí)如何對多選元素進行操作 3、 學(xué)習(xí)模擬鼠標(biāo)進行相關(guān)操作 ( 本節(jié)目標(biāo) ) 4、 學(xué)習(xí)模擬鍵盤進行相關(guān)操作 ( 本節(jié)目標(biāo) ) 用于向 Web 瀏覽器提供虛擬化設(shè)備輸入操作的低級接口.除了剛剛講過的Web元素交互之外, Actions 接口 還提供了對指定輸

    2024年03月24日
    瀏覽(92)
  • MCU原廠是如何對例程進行自動化測試的

    MCU原廠是如何對例程進行自動化測試的

    SDK的自動化測試離不開CICD,簡單來說,測試人員手動/定時通過Jenkins向服務(wù)器發(fā)送請求,服務(wù)器通過openocd服務(wù)將編譯完的程序下載到待測板和輔助板中,然后通過輔助板/待測板的打印來斷言測試的結(jié)果 CICD部分的框架搭建可以參考以下文章 在一家初創(chuàng)企業(yè)如何快速搭建自動

    2024年02月20日
    瀏覽(24)
  • 如何在 Java 中使用JUnit5進行單元測試和自動化測試

    單元測試和自動化測試是現(xiàn)代軟件開發(fā)過程中必不可少的環(huán)節(jié),可以提高代碼質(zhì)量和開發(fā)效率。JUnit5是Java中流行的單元測試框架,本文將介紹如何在Java中使用JUnit5進行單元測試和自動化測試。 單元測試是一種測試方法,用于對軟件系統(tǒng)中的最小可測試單元進行測試。這些單

    2024年02月05日
    瀏覽(26)
  • 教你如何使用自定義測試(Minium)進行微信小程序自動化測試

    目錄 前言: 一、 編寫用例 基本操作 處理小程序API 處理小程序原生控件 數(shù)據(jù)驅(qū)動 二、 執(zhí)行用例 本地執(zhí)行 云測服務(wù)測試 三、 最佳實踐 四、總結(jié) 前言: 微信小程序自動化測試是保障小程序質(zhì)量的重要手段,Minium是一個可為微信小程序編寫自定義測試的自動化測試框架。它

    2024年02月09日
    瀏覽(33)
  • 爆肝整理,Python自動化測試-Pytest參數(shù)化實戰(zhàn)封裝,一篇打通...

    爆肝整理,Python自動化測試-Pytest參數(shù)化實戰(zhàn)封裝,一篇打通...

    參數(shù)化? 通俗點理解就是,定義一個測試類或測試函數(shù),可以傳入不同測試用例對應(yīng)的參數(shù),從而執(zhí)行多個測試用例。 例如: 對登錄接口進行測試,假設(shè)有3條用例,正確賬號正確密碼登錄、正確賬號錯誤密碼登錄、錯誤賬號正確密碼登錄,那么我們只需要定義一個登陸測試

    2024年02月13日
    瀏覽(26)
  • python針對電腦分辨率進行UI自動化測試樣式

    python針對電腦分辨率進行UI自動化測試樣式

    2024軟件測試面試刷題,這個小程序(永久刷題),靠它快速找到工作了?。ㄋ㈩}APP的天花板)_軟件測試刷題小程序-CSDN博客文章瀏覽閱讀3k次,點贊86次,收藏13次。你知不知道有這么一個軟件測試面試的刷題小程序。里面包含了面試常問的軟件測試基礎(chǔ)題,web自動化測試、

    2024年04月11日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包