函式傳入list引數時
def f(x,li=):
for i in range(x):
print(li)
期望結果:
f(4)
#運算結果:[0, 1, 4, 9]
f(5)
#運算結果:[0, 1, 4, 9, 16]
print(『--------------------------------------』)
#運算結果
f(4)
#運算結果:[0, 1, 4, 9]
f(5)
#運算結果:[0, 1, 4, 9, 0, 1, 4, 9, 16]
通過列印列表的id進行辨識
def f(x,li=):
print('id:',id(li))
for i in range(x):
print(li)
f(4)
#id: 2154086435336
#結果:[0, 1, 4, 9]
f(5)
#id: 2154086435336
#結果:[0, 1, 4, 9, 0, 1, 4, 9, 16]
會發現id值是相同的;執行時往裡面傳新的列表說明兩次執行時使用的都是定義函式時的預設引數 li=[ ]
def f(x,li=):
for i in range(x):
print(li)
f(4)
#結果:[0, 1, 4, 9]
f(5,)
#結果:[0, 1, 4, 9, 16]
f(6)
#結果:[0, 1, 4, 9, 0, 1, 4, 9, 16, 25]
當傳遞空列表時,函式體當中會使用傳遞的空列表,沒有傳遞時,使用函式預設值 li=[ ], 所以會產生以上結果。優化方案
def f(x, li=):
if not li:
# 如果li不為空的話,就往下走(清空列表); 為空就不走
li =
for i in range(x):
print(li)
f(4)
#結果:[0, 1, 4, 9]
f(5)
#結果:[0, 1, 4, 9,16]
f(6)
#結果:[0, 1, 4, 9,16,25]
關於 Activity間的傳list
問題 兩個activity直接傳值的時候出現 parcel unable to marshal value 兩個activity直接傳值需要傳乙個list於是在獲得list之後通過 i.putextra name,list 就可以了,但是有幾點需要注意 1 bean 要 implements ser...
函式的傳值
函式在我看來最主要在於函式引數的傳遞,其餘的與正常程式設計無太大差別 函式引數傳值方式 1.傳數值 2.傳位址 3.引用 引用 型別名 引用名 變數名 相當於乙個變數的別名 int n 4 int r n 在宣告變數語句中作為引用 r 4 coutcout 引用例子 void swap int a,...
關於Python函式傳參是傳值還是傳引用
事情的起因要從昨天說起,昨天寫了個函式,對傳入的df做一些計算,大概長這樣 def summary2 cal1 df df1 df.groupby agg df ctau df2 df.groupby agg df part1 pd.concat df1,df2 sort false reindex...