運算符重載
1.運算符
????Python中所有的類型都是類,所有的數(shù)據(jù)類型都是對象疲吸;
???? Python中使用任意的運算符都是在調(diào)用相應(yīng)了類中的相應(yīng)方法,每一個運算符對應(yīng)什么方法都是固定的前鹅,某種數(shù)據(jù)是否支持某個運算符操作就看這個數(shù)據(jù)類型中是否實現(xiàn)了對應(yīng)的方法2.運算符重載指的是在不同的類中實現(xiàn)同樣的運算符對應(yīng)的函數(shù)
????類的對象默認情況下只支持 ==摘悴,!=
淺拷貝和深拷貝
- 1.直接賦值
????將變量中的地址直接賦給新的變量,賦值后兩個變量的地址相同 - 2.拷貝
????不管是淺拷貝和深拷貝都會對數(shù)據(jù)進行產(chǎn)生新的地址 - 3.淺拷貝
????字符串舰绘,列表蹂喻,元組的切片,對象.copy(),copy模塊中的copy方法都是淺拷貝
????淺拷貝只拷貝當前對象捂寿,不會對子對象進行拷貝 - 4.深拷貝
???? copy模塊中的deepcopy方法是深拷貝
枚舉
- 枚舉的特點
????a.可以通過有意義的屬性名直接顯示數(shù)據(jù)
????b.每個數(shù)據(jù)的值不能修改
????c.可以做到不同的數(shù)據(jù)值唯一
內(nèi)存管理
1.內(nèi)存的開辟
????a.內(nèi)存區(qū)間分為棧區(qū)間和堆區(qū)間口四,棧區(qū)間的內(nèi)存自動開辟自動釋放,堆區(qū)間的內(nèi)存需要程序員主動開辟和釋放但是python已經(jīng)將堆區(qū)間的開辟和釋放自動化了
????b.當給變量賦值的時候秦陋,系統(tǒng)會先在堆區(qū)間中開辟空間將數(shù)據(jù)存起來窃祝,然后再將數(shù)據(jù)在堆中的地址存在變量中,變量存在棧區(qū)間
????c.數(shù)字和字符串數(shù)據(jù)在開辟空間的時候會先檢查內(nèi)存中之前內(nèi)存中是否已經(jīng)有這個數(shù)據(jù)踱侣,如果有就直接使用之前的數(shù)據(jù),沒有就開辟空間保存數(shù)據(jù)2.內(nèi)存的釋放
????a.棧區(qū)間:全局棧區(qū)間在程序結(jié)束后銷毀大磺,函數(shù)棧區(qū)間在函數(shù)調(diào)用結(jié)束后銷毀(自動的)
????b.堆區(qū)間:看一個對象是否銷毀抡句,就看這個對象的引用計數(shù)是否為0,如果這個對象的引用計數(shù)為0這個對象就會銷毀(垃圾回收機制)
????注意:Python中針對對象的循環(huán)引用已近引用做了處理杠愧,程序員不需要寫額外的代碼來解決循環(huán)