LeetCode226|劍指Offer27.二叉樹的映象
阿新 • • 發佈:2021-08-07
-
函式執行傳參時,傳遞的是記憶體地址
-
淺拷貝是拷貝的記憶體地址 深拷貝是拷貝的記憶體地址
-
函式的返回值是記憶體地址
def func(): data = [11, 22, 33] return data v1 = func() print(v1) # [11,22,33]
上述程式碼的執行過程:
-
執行func函式
-
data = [11, 22, 33]
建立一塊記憶體區域,內部儲存[11,22,33]
,data變數指向這塊記憶體地址。 -
return data
返回data指向的記憶體地址 -
v1接收返回值,所以 v1 和 data 都指向
[11,22,33]
的記憶體地址(兩個變數指向此記憶體,引用計數器為2) -
由函式執行完畢之後,函式內部的變數都會被釋放。(即:刪除data變數,記憶體地址的引用計數器-1)
所以,最終v1指向的函式內部建立的那塊記憶體地址。
-
-
函式名其實就是一個變數,代指函式。
-
函式同時也可被雜湊,所以函式名通知也可以當做 集合的元素、字典的鍵。
點選檢視程式碼
def send_msg(mobile, content): """傳送簡訊""" pass def send_email(to_email, subject, content): """傳送圖片""" pass def send_wechat(user_id, content): """傳送微信""" pass func_list = [ {"name": send_msg, "params": {'mobile': "15131255089", "content": "你有新短訊息"}}, {"name": send_email, "params": {'to_email': "[email protected]", "subject": "報警訊息", "content": "硬碟容量不夠用了"}}, {"name": send_wechat, "params": {'user_id': 1, 'content': "約嗎"}}, ] # {"name": send_msg, "params": {'mobile': "15131255089", "content": "你有新短訊息"}}, for item in func_list: func = item['name'] # send_msg param_dict = item['params'] # {'mobile': "15131255089", "content": "你有新短訊息"} func(**param_dict) # send_msg(**{'mobile': "15131255089", "content": "你有新短訊息"})
-
將函式名賦值給其他變數時,變數指的是函式,函式和變數都能被執行;
函式名被賦值後,函式不能被執行,函式名是被賦值的變數
函式名不能於系統函式同名
-
函式名可以當作返回值
本文來自部落格園,作者:王奇512,轉載請註明原文連結:https://www.cnblogs.com/wangqi512/p/15124797.html