python中所有的數(shù)據(jù)類型都是類,數(shù)據(jù)都是對象
所有的運算符對應(yīng)的操作,本質(zhì)都是在調(diào)用數(shù)據(jù)類型對應(yīng)的魔法方法。 每個運算符都對應(yīng)一個魔法方法
1.一個變量直接給另一個變量賦值:直接將地址賦值,賦完后兩個變量指向同一塊內(nèi)存區(qū)域
2.淺拷貝和深拷貝
拷貝原理:將被拷貝的對象復(fù)制一份,產(chǎn)生一個新的數(shù)據(jù),然后將新的數(shù)據(jù)的地址返回。
a.淺拷貝
1)列表或字典的copy方法是淺拷貝、切片也是淺拷貝
2)copy.copy(對象) - 復(fù)制指定的對象,產(chǎn)生一個新的的對象。不會復(fù)制子對象
b.深拷貝
copy.deepcopy(對象) - 復(fù)制指定的對象,產(chǎn)生一個新的對象,如果這個對象中有其他的對象,子對象也會被復(fù)制
1.數(shù)據(jù)的存儲(內(nèi)存開辟)
python的變量都存儲在棧區(qū)間,對象在堆區(qū)間
聲明變量或者給變量賦值,先在內(nèi)存(堆)中開辟存儲數(shù)據(jù),然后將數(shù)據(jù)地址保存在變量中。
注意:數(shù)字和字符串,如果是用數(shù)字或字符串賦值,不會直接開辟空間保存數(shù)據(jù),
而是先在內(nèi)存檢測這個數(shù)據(jù)之前是否已經(jīng)存儲過如果已經(jīng)存儲直接用上次保存數(shù)據(jù),
沒有存儲才會開辟新的空間保存數(shù)據(jù)
2.內(nèi)存的釋放
)
引用計數(shù)
python中每個對象都有一個屬性叫引用計數(shù),用來保存當(dāng)前對象引用的個數(shù)
python中垃圾回收機(jī)制來判斷一個對象是否銷毀,就看這個對象的引用計數(shù)是否為0,
如果為0就會被銷毀;反之不銷毀
進(jìn)行通信通信的兩端就是套接字;有兩種類型,分別是服務(wù)器套接字、客戶端套接字
1.創(chuàng)建套接字對象(買個電話機(jī))
family - 設(shè)置ip協(xié)議類型, AF_INET(ipv4), AF_INET6(ipv6)
type - 設(shè)置傳輸協(xié)議類型, SOCK_STREAM(TCP), SOCK_DGRAM(UDP)
2.綁定ip地址和端口(插電話線綁定電話號碼)
bind((ip地址, 端口))
ip地址 - 字符串,服務(wù)器對應(yīng)的ip地址
端口號 - int, 端口號用來區(qū)分一臺電腦上的不同的服務(wù)。0-65535, 0-1024是著名端口,一般不選。
同一時間一個端口只能綁定一個服務(wù)
3.開始監(jiān)聽請求(按電池,等別人打電話)
4.讓服務(wù)器一直運行
5.接收請求(接電話)
代碼運行到這個位置,會停下來,等到有客戶端給服務(wù)器發(fā)送請求為止。。。
6.接收數(shù)據(jù)(聽別人說)
recv(bufsize) - bufsize,設(shè)置一次性能夠接收的數(shù)據(jù)大小的最大值,單位是字節(jié)
返回的數(shù)據(jù)類型是字節(jié)
7.發(fā)送數(shù)據(jù) (說給別人聽)
8.關(guān)閉連接(掛電話)
1.創(chuàng)建套接字對象
2.連接服務(wù)器
3.發(fā)送消息
4.接收消息