Python學習總結(二)可變 不可變型別與函式

2021-09-11 05:52:46 字數 1985 閱讀 1380

3.乙個例子

二、函式的一些細節

多值引數

遞迴首先需要記住的一點是,在python中,變數的賦值是使用引用來傳遞的。這也就意味著,不管這個物件是已經存在的還是新建立的,在賦值的時候都將傳遞這個物件的引用。

不可變資料型別

可變資料型別

a =

1print(id

(1))

# 1print(id

(a))

# 2 same to 1

a =2

print(id

(a))

# 3 diff from 1

b =1

print(id

(b))

# 4 same to 1

c = a

print(id

(c))

# 5 same to 3

若無指定返回值,則函式預設返回值型別為nonetype

num =

5# 函式的定義部分需要與上面語句間隔兩行

deffunc()

:# todo(cui) 此語句可用於解釋將要做什麼

"""函式體的整體注釋"""

tmp_1 =

10 tmp_2 =

12print(id

(tmp_1),id

(tmp_2)

)# global 宣告變數後,可以修改全域性變數,否則python在函式中修改全域性變數無效

# 如果不使用global修飾的話,預設在本地建立乙個與全域性變數同名的新變數

# return (tmp_1, tmp_2)

return tmp_1, tmp_2 # 這樣預設返回的是元組的形式

# return [tmp_1, tmp_2]

# result = func() # 使用 列表/元組 接收

tmp1, tmp2 = func(

)# 接收的變數個數應與返回引數的個數一致,否則報錯

print

(tmp1, tmp2)

print(id

(tmp1),id

(tmp2)

)# id()可以用於取變數的位址

可變型別變數作為引數傳遞時,在函式體內部改變該引數值不會對形參造成影響

不可變型別變數作為引數傳遞時,~~會造成改變

模擬於c++中的預設引數,預設引數可有可無。

python中預設引數的注意事項:

有時可能可能需要乙個函式能夠處理的引數個數是不確定的,這個時候,就可以使用多值引數

例如程式:

def

func

(num,

*args,

**kwargs)

:print

(num)

print

(args)

print

(kwargs)

func(0,

1,2,

3,4, name=

"xiaoming"

, age=18)

# 不使用拆包

拆包語法

使用情況:呼叫函式時,將乙個元組變數或乙個字典變數直接傳遞給相應的形參

使用方法:

**:

def

func

(num,

*args,

**kwargs)

:print

(num)

print

(args)

print

(kwargs)

tp =(1

,2,3

,4)dc =

func(0,

*tp,

**dc)

# 拆包

演算法方面,不再贅述。

Python 可變型別和不可變型別總結

可變型別 list,set,dict 不可變型別 int,str,tuple 物件的三要素 value,type,id 判斷type是否相同 true 判斷value是否相同 true 判斷id是否相同 a abc b 123 print id a id b b abc print a is b,i...

python可變與不可變

可變與不可變型別的實質實際上就是儲存機制的不同 不可變型別 比如字串 被稱為不可變的字串行,每個字元底層均有規範的unicode碼對應,記憶體規定無法對單一的乙個字元進行修改,要修改字串必須重新指向乙個全新的字串 可變型別 一方面,該列表可以保證在位址不變的前提下,改變列表內容 另一方面,該引用也可...

python可變與不可變

不可變作用和意義 物件所指的記憶體中的值是可以改變的。變數名儲存的是乙個位址,該位址指向乙個具體的物件,並且不管對變數的值進行怎樣的操作,都不會改變變數名的儲存位址。字典dict 列表list 集合set 1.list list1 1 2,3 4 print list1,id list1 1,2,3...