日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python基础避坑】函数内存底层分析,全局变量/局部变量,参数传递,浅拷贝/深拷贝

發布時間:2024/2/28 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python基础避坑】函数内存底层分析,全局变量/局部变量,参数传递,浅拷贝/深拷贝 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

老高說,基本功不扎實會在工作中遇到很多的坑,非常同意…


函數定義示例

1.含有返回值

# -*-coding:utf-8-*- def add(a, b):'''兩數相加'''sum = a + breturn sum c = add(1, 2)print c

2.不含有返回值

# -*-coding:utf-8-*- def add(a, b):'''兩數相加'''sum = a + bprint sumreturnadd(1, 2)

3.返回一個列表

# -*-coding:utf-8-*- def add(a, b):'''兩數相加'''sum = a + bprint sumreturn [sum, a, b]res = add(1, 2) print res # 輸出:[3, 1, 2]

要點

1.我們使用def來定義函數,python執行def時,會創建一個函數對象,并綁定到函數名變量上。
2.如果打印函數的type,結果是<class 'function'>
3.括號是調用符(call)
內存說明


函數也是對象,內存底層分析

python函數被調用的時候,在??臻g中,會創建棧幀,保存局部變量的值。函數調用結束后,棧幀被銷毀。
局部變量與全局變量的保存位置不同。不能再函數中直接調用函數外面聲明的變量。
如果要在函數內改變全局變量的值,需要增加global關鍵字聲明


變量的作用域–全局變量和局部變量

# -*-coding:utf-8-*- c = 100def add(a, b):global cc = 200returnadd(1, 2) print c # 輸出:200

局部變量和全局變量效率測試




參數的傳遞

傳遞不可變對象的引用

注意:以int為例,Java在傳參的時候就會創建一個新的對象,而python在傳參的時候傳遞的還是原來的對象的引用,只有在賦值的時候才會進行新對象的創建。

淺拷貝和深拷貝


(1)淺拷貝示例


內存分析

(2)深拷貝示例

內存分析

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的【Python基础避坑】函数内存底层分析,全局变量/局部变量,参数传递,浅拷贝/深拷贝的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。