根據**理解函式記憶體分配
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...