1. 程式人生 > 實用技巧 >Python按值傳遞所有引數,但有例外(物件的別名)(初步理解)

Python按值傳遞所有引數,但有例外(物件的別名)(初步理解)

python按值傳遞所有引數,但有例外(物件的別名)(初步理解)

  • 按值傳遞的例子:按值傳遞
var = 1
def test(a):
    a = 3
test(var)
print(var)
# 執行結果入下
#1
#

傳入函式後,函式改變的是變數值的副本,這個副本僅在函式內使用生效,即傳入函式的引數是一個函式內部的區域性變數,因此var值沒有被改變



  • 例外:存在狀態的物件
from graphics import *
win = GraphWin('test', 300, 300)

# 函式定義, 設定視窗背景色並且在視窗中畫一條線段的函式
def setbgAndLine(graphics ,somewin, colour):
    somewin.setBackground(colour)
    somewin.setCoords(0,0,10,10)
    Line(Point(4,4), Point(6,6)).draw(somewin)
    input()  # 使視窗不自動關閉(因為ide裡的視窗會閃現一下就消失)
    somewin.close()

# 函式呼叫
setbgAndLine( win, 'red')

執行結果

(初步理解)這裡傳入函式的引數是類似是指向這個物件的指標的副本,是一種別名的情況,在函式中對該物件進行的改變,實際上也對函式外的實際物件做出了改變,可能類似於按引用傳遞