Python 函式記憶體分配

2021-10-09 05:00:25 字數 1512 閱讀 7866

根據**理解函式記憶體分配

1將函式**存入記憶體方法區(只是儲存**,不儲存**所表示的資料):

def fun01():

a = 100

2 呼叫函式時在記憶體棧區開闢空間(棧幀):

fun01()

3當函式執行完畢後,棧幀被銷毀.

p2[0] = 「a」

g01 = 1

g02 = [「a」]

6 # 將變數g01儲存的物件位址傳入函式:

fun02(g01, g02)

print(g01) # 1

print(g02[0]) # a

1\練習: 將以下功能, 封裝到函式中。

定義排序函式

「」"list01 = [3, 8, 6, 5, 2]

for r in range(len(list01) - 1):

for c in range(r + 1, len(list01)):

if list01[r] > list01[c]:

list01[r], list01[c] = list01[c], list01[r]

print(list01)

「」"此練習中為可變型別傳參,不用通過return返回值,因為可變型別傳參時,改變的可變物件,函式內部可以改變原資料

def

sort

(list_target)

:for r in

range

(len

(list_target)-1

):for c in

range

(r +1,

len(list_target)):

if list_target[r]

> list_target[c]

: list_target[r]

, list_target[c]

= list_target[c]

, list_target[r]

# return list_target # 1. 傳入的是可變物件 2. 函式體改變的是可變物件

list01 =[3

,8,6

,5,2

]print

(sort(list01)

)sort(list01)

print

(list01)

``此練習中為可變型別傳參,不用通過return返回值,因為可變型別傳參時,改變的可變物件,函式內部可以改變原資料

不可變型別引數有:

數值型(整數,浮點數,複數)

布林值bool

none 空值

字串str

元組tuple

固定集合frozenset

可變型別引數有:

列表 list

字典 dict

集合 set

傳參說明:

不可變型別的資料傳參時,函式內部不會改變原資料的值。

可變型別的資料傳參時,函式內部可以改變原資料。

記憶體分配函式

2.c中提供堆區供給開發者分配記憶體空間,動態記憶體分配函式malloc,calloc,realloc 1 malloc函式的使用,原型為void malloc int length 引數為分配記憶體空間的大小 將記憶體分配4個位元組給乙個int型指標 返回值為任何指標 考慮到不同平台,可以使用si...

記憶體分配函式

1 malloc 函式 void malloc unsigned int size 在記憶體的動態分配區域中分配乙個長度為size的連續空間,如果分配成功,則返回所分配記憶體空間的首位址,否則返回null,申請的記憶體不會進行初始化。2 calloc 函式 void calloc unsigned ...

python語法 記憶體分配 id函式使用

python中會為每個物件分配記憶體,哪怕他們的值完全相等。id object 函式是返回物件object在其生命週期內位於記憶體中的位址,id函式的引數型別是乙個物件。name1 2name3 2id name1 out 31 140704132617280 id name3 out 32 140...