python中,引數是以引用的形式傳遞給函式的。來看下面**:
def a(the_list):
print('got', the_list)
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的值。 python 引數傳遞 Python 引數傳遞
python中的變數 乙個變數是區域性還是全域性,在編譯函式的時候就已經決定,因此讀變數值的時候也不會逐層向外查詢。變數是全域性還是局域,根據如下3條 1.如果函式內部有global語句,那麼它宣告的變數是全域性的。2.如果函式內部有對變數的賦值語句,那麼它是局域的。3.除此之外都是全域性的。注意1...
python 引數傳遞 python引數傳遞
python中函式引數的傳遞是通過 賦值 來傳遞的。但這條規則只回答了函式引數傳遞的 戰略問題 並沒有回答 戰術問題 也就說沒有回答怎麼賦值的問題。函式引數的使用可以分為兩個方面,一是函式引數如何定義,二是函式在呼叫時的引數如何解析的。而後者又是由前者決定的。函式引數的定義有四種形式 1.f arg...
python高階 函式的引數傳遞機制
物件和變數 python中一切皆物件。在python中,型別屬於物件,變數是沒有型別的,這正是python的語言特性。所有的變數都可以理解是記憶體中乙個物件的 引用 所以,希望大家在看到乙個python變數的時候,把變數和真正的記憶體變數區分開。可變 mutable 和不可變 immutable 物...