Python 不變物件 可變物件

2021-10-05 11:37:38 字數 906 閱讀 7095

def

findcontinuoussequence_optimize

(self, tsum)

:# write code here

if tsum <3:

return

res =

for i in

range(1

,int

((tsum +1)

/2))

:print

('外層迴圈i:%d'

% i)

sum=

0 temp =

while

sum< tsum:

print

('內層迴圈i:%d'

% i)

sum+= i

i +=1if

sum== tsum:

return res

記錄一下,在做的時候比較納悶為什麼內部迴圈時可以在i值基礎上進行改變,跳出內部迴圈i值對外部迴圈i值也沒影響。

由此想到python的字串數字是不可變變數,而變數只是給儲存的數字字串等起的「名字」,因此輸出了一下i在內外迴圈的位址,發現,內外迴圈對應相同的i值位址相同,應證了python的不可變變數。

不可變(immutable):int、字串(string)、float、(數值型number)、元組(tuple)

可變(mutable):字典型(dictionary)、列表型(list)

python函式引數對於可變物件,函式內對引數的改變會影響到原始物件;對於不可變物件,函式內對引數的改變不會影響到原始引數。原因在於:

1、可變物件,引數改變的是可變物件,其內容可以被修改。

2、不可變物件,改變的是函式內變數的指向物件。引自

因此,**中i值只是當前數值的引用。

python 可變物件和不可變物件

變數沒有型別,那麼就意味著它可以隨意指向任何物件。python中的變數相當於乙個指標。當將乙個變數a賦值給另乙個變數b時,無論變數a指向的是可變物件還是不可變物件,變數b指向變數a指向的物件。例 alist 1 2,3 anolist alist id alist id anolist true b...

python可變物件與不可變物件

可改變的物件 例子1def change num print function parameter id num num 100 print assigin value to num id num if name main a 10 print origin id a id a change a p...

Python可變物件和不可變物件

python中一切皆物件,每個物件都有其唯一的id,對應的型別和值,其中id指的是物件在記憶體中的位置。根據物件的值是否可修改分為可變物件和不可變物件。其中,不可物件包括 數字,字串,tuple,frozenset 不可變集合 可變物件包括 list,dict,set python中的變數可以指向任...