Python進階(十):參數傳遞

python中,參數是以引用的形式傳遞給函數的。來看下面代碼:

def a(the_list):
    print('Got', the_list)
    the_list.append('treats')
    print('Set to', the_list)

outer_list = ['Dogs', 'eats']

print('Before, outer_list = ', outer_list)
a(outer_list)
print('After, outer_list = ', outer_list)

# Outputs in terminal
# >>> Before, outer_list = ['Dogs', 'eats']
# >>> Got ['Dogs', 'eats']
# >>> Set to ['Dogs', 'eats', 'treats']
# >>> After, outer_list = ['Dogs', 'eats', 'treats']

在上面代碼中the_list作爲參數傳遞進入a函數中,a函數對the_list進行操作,由於the_list是outer_list的引用,所以改變的是outer_list的數值。

好了,來看下進階版:

def b(the_list):
     print('Got', the_list)
    the_list = ['You', 'never', 'lie']
    print('Set to', the_list)

outer_list = ['Dogs', 'eats']

print('Before, outer_list = ', outer_list)
a(outer_list)
print('After, outer_list = ', outer_list)

# Outputs in terminal
# >>> Before, outer_list = ['Dogs', 'eats']
# >>> Got ['Dogs', 'eats']
# >>> Set to ['You', 'never', 'lie']
# >>> After, outer_list = ['Dogs', 'eats']

上面代碼中一開始the_list還是outer_list的引用,但是由於the_list = ['You', 'never', 'lie']這句語句等號右邊是直接生成一個新的列表,所以the_list不在時outer_list的引用,而是變成了一個新的參數。對the_list操作,並不會改變outer_list的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章