亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python函數(shù)傳參意義示例詳解

 更新時間:2021年10月12日 15:18:53   作者:zjuPeco  
這篇文章主要為大家介紹了關(guān)于python函數(shù)傳參的意義示例詳解,有需要的朋友可以借鑒參考下,希望可以加深各位同學(xué)對Python傳參的理解

C++這樣的語言用多了之后,在Python函數(shù)傳遞參數(shù)的時候,經(jīng)常會遇到一個問題,我要傳遞一個引用怎么辦?
比如我們想要傳一個x到函數(shù)中做個運算改變x的值:

def change(y):
    y += 1
x = 1
print ("before change:", x)
change(x)
print ("after change: ", x)

得到的結(jié)果是

before change: 1
after change:  1

完全沒用~~~這是怎么回事?
我來說明一下這個過程~

參數(shù)傳遞

也就是說python中的等號就是把變量指向了一個實例而已。
那么,如何做到其它語言中引用這樣的效果呢?一個比較推薦的方法就是用把參數(shù)return回去就可以了,如下面代碼所示。

def change(y):
    y += 1
    return y

x = 1
print ("before change:", x)
x = change(x)
print ("after change: ", x)

結(jié)果為

before change: 1
after change:  2

另一種方法就是,我們不讓函數(shù)中的參數(shù)指向新的地址不就可以了,我們讓它在原來的地址上修改我們的值。這一點,只有一部分的數(shù)據(jù)類型可以做到,我們把這樣的對象叫做可變對象,做不到的就叫不可變對象。

  • 不可變對象:int,string,float,tuple 等
  • 可變對象 :list,dictionary 等

舉幾個例子更為通俗易懂

def change(x):
    print ("before append:", x, "id:", id(x))
    x.append(0)
    print ("after append:", x, "id:", id(x))
x = [1, 2, 3]
print ("before change:", x, "id:", id(x))
change(x)
print ("after change:", x, "id:", id(x))
before change: [1, 2, 3] id: 140623459512008
before append: [1, 2, 3] id: 140623459512008
after append: [1, 2, 3, 0] id: 140623459512008
after change: [1, 2, 3, 0] id: 140623459512008

由于list在做append操作時,x指向的地址是不變的,所以可以有引用的效果,x[0] = 4這樣的操作也是沒問題的
然而,如果是把x指向了新的地址就不行了,如下

def change(x):
    print ("before equal:", x, "id:", id(x))
    x = [5]
    print ("after equal:", x, "id:", id(x))

x = [1, 2, 3]
print ("before change:", x, "id:", id(x))
change(x)
print ("after change:", x, "id:", id(x))
before change: [1, 2, 3] id: 139683058095432
before equal: [1, 2, 3] id: 139683058095432
after equal: [5] id: 139683058028360
after change: [1, 2, 3] id: 139683058095432

這下應(yīng)該就搞清楚是怎么回事了吧,不過正是因為python的這種特性,在函數(shù)設(shè)置默認(rèn)參數(shù)的時候,我們要注意盡量不用可變對象當(dāng)默認(rèn)值,否則會發(fā)生下面這種情況

def change(x=[]):
    x.append(1)
    return x

print (change())
print (change())

[1]
[1, 1]

比較妥當(dāng)?shù)淖龇ㄊ怯貌豢勺儗ο髞泶鎇],比如None

def change(x=None):
    if not x:
        x = []
    x.append(1)
    return x

print (change())
print (change())

此時的輸出為

[1]
[1]

以上就是python函數(shù)傳參意義示例詳解的詳細(xì)內(nèi)容,更多關(guān)于python函數(shù)傳參的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Selenium定位瀏覽器彈窗方法實例總結(jié)

    Selenium定位瀏覽器彈窗方法實例總結(jié)

    彈出框是自動化測試中一種常見的元素,這種元素通常是客戶端自帶的,下面這篇文章主要給大家介紹了關(guān)于Selenium定位瀏覽器彈窗方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • python 判斷矩陣中每行非零個數(shù)的方法

    python 判斷矩陣中每行非零個數(shù)的方法

    今天小編就為大家分享一篇python 判斷矩陣中每行非零個數(shù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python數(shù)學(xué)建模是加深Numpy和Pandas學(xué)習(xí)

    python數(shù)學(xué)建模是加深Numpy和Pandas學(xué)習(xí)

    這篇文章主要介紹了python數(shù)學(xué)建模是加深Numpy和Pandas學(xué)習(xí),緊接上一篇學(xué)習(xí)內(nèi)容展開Numpy更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-07-07
  • 使用python快速獲取PDF文件頁數(shù)的辦法

    使用python快速獲取PDF文件頁數(shù)的辦法

    有時在處理或打印一個PDF文檔之前,你可能需要先知道該文檔包含多少頁,對于程序員來說,編寫腳本來完成這項工作會更加高效,本文就介紹一個使用Python快速獲取PDF文件頁數(shù)的辦法,需要的朋友可以參考下
    2024-03-03
  • python 模擬貸款卡號生成規(guī)則過程解析

    python 模擬貸款卡號生成規(guī)則過程解析

    這篇文章主要介紹了python 模擬貸款卡號生成規(guī)則過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • yolov5中train.py代碼注釋詳解與使用教程

    yolov5中train.py代碼注釋詳解與使用教程

    train.py里面加了很多額外的功能,使得整體看起來比較復(fù)雜,其實核心部分主要就是 讀取數(shù)據(jù)集,加載模型,訓(xùn)練中損失的計算,下面這篇文章主要給大家介紹了關(guān)于yolov5中train.py代碼注釋詳解與使用的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 用tensorflow構(gòu)建線性回歸模型的示例代碼

    用tensorflow構(gòu)建線性回歸模型的示例代碼

    本篇文章主要介紹了用tensorflow構(gòu)建線性回歸模型的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Python語言的自我介紹一起來看看

    Python語言的自我介紹一起來看看

    這篇文章主要為大家詳細(xì)介紹了Python語言的自我介紹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • python操作數(shù)據(jù)庫之sqlite3打開數(shù)據(jù)庫、刪除、修改示例

    python操作數(shù)據(jù)庫之sqlite3打開數(shù)據(jù)庫、刪除、修改示例

    這篇文章主要介紹了python操作sqlite3打開數(shù)據(jù)庫、刪除、修改示例,需要的朋友可以參考下
    2014-03-03
  • 在pycharm中無法import所安裝的庫解決方案

    在pycharm中無法import所安裝的庫解決方案

    這篇文章主要介紹了在pycharm中無法import所安裝的庫解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05

最新評論