1. 程式人生 > 程式設計 >基於python 將列表作為引數傳入函式時的測試與理解

基於python 將列表作為引數傳入函式時的測試與理解

將一個列表傳入函式後,會對這個列表本身產生什麼改變?

這就是本文主要考察的內容。

list = [1,2,3,4,5,6,7]
word = list.pop(0)
print(word)
print(list)
# 輸出結果理所當然地為:
# 1
# [2,7]
#
def a(temp):
  b = temp.pop(0)
  print(b)
  print(temp)

a(list)
# 輸出結果為:
# 2
# [3,7]
# 此處,傳給temp時,list是[2,...7],但pop後,原list
# 有什麼變化呢?試試下面的程式碼
print(list)
# 輸出結果為:
# [3,7]
# 可見,執行temp.pop函式後,list原本的值也受到了改變。
# 所以,一個數組(或者叫列表)傳給temp時,傳入的是指標
# 地址,而不是副本。下面的例子更加說明了這個問題

print(list[0])

def b(temp2):
  temp2[0] = temp2[0] + 10
  # 將temp2這個列表的第一個元素,作+10的運算
b(list)
print(list[0])
# 最終輸出:
# 3
# 13
# list在b函式內的經過temp2運作後,改變的是list本身的值
# 所以,將某個列表(比如這裡的list)作為引數傳入某個函式
# 其傳遞的是list所在的真實地址。所有修改也是對list直接
# 的修改。

補充知識:python 字典怎樣當作引數傳入函式裡,以及在函式裡的一些遍歷。變數的作用域。

字典當作引數以後的一些用法:

dic={'abc':123,'aaa':333,'wer':334}
def text_dic(**dd):
  for a,b in dd.items():# a 代表鍵 ,b代表值
    print(a,b)
text_dic(**dic)

#輸出字典中的鍵:
def text_dic(**dd):
   for key in text_dic:#key為鍵
 print(key)
text_dic(**dic)

#輸出字典中鍵的值:
def text_dic(**dd):
   for value in text_dic.keys():#value為值
 print(value)
text_dic(**dic)

變數的作用域:

全域性變數:

全域性變數的作用域當然是全域性的隨時可呼叫,他要是和區域性變數衝突時,區域性變數優先

區域性變數:

在python中區域性變數不可以改變全域性變數。

當然如果你想在區域性改全域性變數的話,你可以先宣告這個變數是全域性變數globle,然後在進行更改

以上這篇基於python 將列表作為引數傳入函式時的測試與理解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。