1. 程式人生 > 其它 >python函式中引數預設值為變數名時的一些坑

python函式中引數預設值為變數名時的一些坑

技術標籤:PythonPython函式傳參預設值引數

版權宣告:轉載請註明作者(獨孤尚良dugushangliang)出處:https://blog.csdn.net/dugushangliang/article/details/113775260

a=1
def b(c=a):
    print(c)

#執行b將輸出1
b()
a=0
#執行b還是輸出1
b()
a=[1,2]
def b(c=a):
    print(c)

#將輸出[1,2]
b()
#
a[1]=3
#將輸出[1,3]
b()
a=[2,3]
#還是輸出[1,3]
b()

看過上面的程式碼,我們可以理解到,傳參實際上傳的是變數的地址,簡單理解就是下圖所示:

即:a值的改變不會讓b也同時改變。上圖在Python入門的時候有學習過,但用於函式中有可能會一時疏忽,達不到預期結果。

那麼,如果想要如預期一樣怎麼使用函式呢?把a重新傳入即可。

b(c=a)

獨孤尚良dugushangliang——著