python函式中引數預設值為變數名時的一些坑
阿新 • • 發佈:2021-02-10
版權宣告:轉載請註明作者(獨孤尚良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——著