day16內(nèi)存管理

運(yùn)算符重載

python中所有的數(shù)據(jù)類(lèi)型都是類(lèi),數(shù)據(jù)都是對(duì)象所有的運(yùn)算符的操作帅霜,本質(zhì)都是在調(diào)用數(shù)據(jù)類(lèi)型對(duì)應(yīng)的魔法方法每個(gè)運(yùn)算符都對(duì)應(yīng)一個(gè)固定的魔法方法

class Student:
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

    # 重載加法運(yùn)算符

    def __add__(self, other):
        return self.age + other.age

    # 重載加法運(yùn)算符

    def __mul__(self, other):
        return self.age * other

    # 重載大于
    def __gt__(self, other):
        return self.age > other.age

    def __repr__(self):
        return str(self.__dict__)


stu1 = Student('小敏', 25, 68)
stu2 = Student('小月', 23, 79)

print(stu1 + stu2)
print(stu1 * 10)
print(stu1 > stu2)
allstudent = [Student('小敏', 25, 68), Student('小月', 23, 79)]
allstudent.sort()
print(allstudent)
# 練習(xí)勉吻,讓Student的對(duì)象支持乘法運(yùn)算父泳,運(yùn)算規(guī)則是:
class Student:
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

    # 重載加法運(yùn)算符

    def __add__(self, other):
        return self.age + other.age

    # 重載乘法運(yùn)算符

    def __mul__(self, other):
        resault = []
        for _ in range(other):
            resault.append(self)
        return resault

    # 重載大于

    def __gt__(self, other):
        return self.age > other.age

    def __repr__(self):
        return '<' + str(self.__dict__)[1:-1] + '>'


stu1 = Student('小敏', 25, 68)
stu2 = Student('小月', 23, 79)

print(stu1 + stu2)
print(stu1 > stu2)
allstudent = [stu1, stu2]
allstudent.sort()
print(allstudent)

# 練習(xí)澈吨,讓Student的對(duì)象支持乘法運(yùn)算凶掰,運(yùn)算規(guī)則是:

stu3 = Student('小喵', 28, 82)
resault = stu3 * 2
print(resault)

stu3.name = '小狗'
print(resault)

resault[0].name = '李逵'
print(resault)
# 1.一個(gè)變量給另一個(gè)變量賦值:直接將地址賦值燥爷,賦完值后,兩個(gè)變量只想同一塊內(nèi)存區(qū)域并且相互影響
print('++++++++直接賦值++++++')
stu4 = stu1
print(id(stu4), id(stu1))
stu1.age = 1000
print(stu4)
print(stu1)

深拷貝和淺拷貝

淺拷貝和深拷貝(面試點(diǎn)E尘健)
a.淺拷貝
1.列表或字典的copy方法是淺拷貝前翎、前片也是淺拷貝
2.copy.copy(對(duì)象) - 復(fù)制指定的對(duì)象,產(chǎn)生一個(gè)新的對(duì)象
淺拷貝原理:將被拷貝的對(duì)象復(fù)制一份奶赠,產(chǎn)生一個(gè)新的數(shù)據(jù)鱼填,然后將新的數(shù)據(jù)的地址返回(不會(huì)復(fù)制子對(duì)象)
b.深拷貝
copy.deepcopy(對(duì)象) - 復(fù)制指定的對(duì)象,產(chǎn)生一個(gè)新的對(duì)象毅戈,如果這個(gè)對(duì)象中還有其他對(duì)象苹丸,子對(duì)象也會(huì)被復(fù)制

print('++++++++淺拷貝++++++')
stu5 = copy.copy(stu1)
stu5.name = '大黃'
print(stu1)
print(stu5)
print('++++++++深拷貝++++++')
stu6 = copy.deepcopy(stu1)
stu1.name = '大腦虎'
print(stu1)
print(stu6)

內(nèi)存管理

1.數(shù)據(jù)的存儲(chǔ)(內(nèi)存開(kāi)辟)
python的所有的變量都存儲(chǔ)在棧區(qū)間,對(duì)象都在堆區(qū)間
聲明變量或者給變量賦值苇经,是現(xiàn)在內(nèi)存(堆)中開(kāi)辟存儲(chǔ)數(shù)據(jù)赘理,然后將數(shù)據(jù)地址保存在變量中
但是數(shù)字和字符串,如果是用字符串或者數(shù)字給變量賦值扇单,不會(huì)直接開(kāi)辟空間保存數(shù)據(jù)商模,
而是現(xiàn)在內(nèi)存中檢查這個(gè)數(shù)據(jù)之前是否已經(jīng)存儲(chǔ)過(guò),如果已經(jīng)存儲(chǔ)直接使用上次保存的數(shù)據(jù)蜘澜,
沒(méi)有存儲(chǔ)才會(huì)開(kāi)辟新的空間保存數(shù)據(jù)

2.內(nèi)存的釋放
管理原理:
1.引用計(jì)數(shù):
python中每個(gè)對(duì)象都有一個(gè)屬性叫引用計(jì)數(shù)施流,用來(lái)保存當(dāng)前對(duì)象的引用的個(gè)數(shù)
2.python中的垃圾回收機(jī)制來(lái)判斷一個(gè)對(duì)象是否銷(xiāo)毀,就看這個(gè)對(duì)象的引用計(jì)數(shù)是否為0鄙信,
如果為0就會(huì)被銷(xiāo)毀

list1 = [1, 2]
list2 = [1, 2]
print(id(list1), id(list2))

num1 = 10
num2 = 10
print(id(num1), id(num2))
print('=================引用計(jì)數(shù)==================')

list3 = [1, 2]
print(getrefcount(list3))

套接字

服務(wù)器端

from socket import *
"""
進(jìn)行通信的兩端就是套接字瞪醋,有兩種類(lèi)型,分別是服務(wù)器套接字装诡、客戶端套接字
1.服務(wù)器套接字
"""
# 1.創(chuàng)建套接字對(duì)象
""" 
family - 設(shè)置ip協(xié)議類(lèi)型银受,AF_INET(ipv4),AF_INET6(ipv6)
type - 設(shè)置傳輸協(xié)議類(lèi)型践盼,SOCK_STREAM(TCP),SOCK_DGRAM(UDP)
"""
server = socket(family=AF_INET, type=SOCK_STREAM)
# 2.綁定ip地址和端口
"""
bind((ip地址,端口))
ip - 字符串宾巍,服務(wù)器對(duì)應(yīng)的ip地址
端口號(hào) - int咕幻,端口用來(lái)區(qū)分電腦上的不同的服務(wù)0 - 65535,0 - 1024是著名端口(避開(kāi))
同一時(shí)間一個(gè)端口只能綁定一個(gè)服務(wù)
"""
server.bind(('10.7.185.77', 8080))
# 3.開(kāi)始監(jiān)聽(tīng)請(qǐng)求
server.listen(512)
# 4.讓服務(wù)器一直運(yùn)行
while True:
    print('監(jiān)聽(tīng)狀態(tài).....')
    # 代碼運(yùn)行到這個(gè)位置,會(huì)停下來(lái)顶霞,等到客戶端給服務(wù)器發(fā)送請(qǐng)求位置
    connect, addr = server.accept()  # 5.接收請(qǐng)求
    print(addr, '鏈接成功')
    while True:
        # 6.接收消息
        """
        recv(bufsize) - 設(shè)置一次性能夠接收的數(shù)據(jù)大小的最大值肄程,單位是字節(jié)
        """
        re_data = connect.recv(1024)  # 保存接收到的數(shù)據(jù),返回的是字節(jié)
        print('客戶端>>>', re_data.decode(encoding='utf-8'))

        # 7.發(fā)送數(shù)據(jù)
        message = input('>>>')
        connect.send(message.encode())
    # 8.關(guān)閉連接
    connect.close()

客戶端

from socket import *

# 1. 創(chuàng)建套接字對(duì)象
client = socket()

# 2.連接服務(wù)器
client.connect(('10.7.185.77', 8080))
while True:
    # 3.發(fā)送數(shù)據(jù)
    message = input('請(qǐng)輸入:')
    client.send(message.encode())

    # 4.接收消息
    re_data = client.recv(1024)
    print('客戶端>>>', re_data.decode(encoding='utf-8'))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末确丢,一起剝皮案震驚了整個(gè)濱河市绷耍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鲜侥,老刑警劉巖褂始,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異描函,居然都是意外死亡崎苗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)舀寓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胆数,“玉大人,你說(shuō)我怎么就攤上這事互墓”啬幔” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵篡撵,是天一觀的道長(zhǎng)判莉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)育谬,這世上最難降的妖魔是什么券盅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮膛檀,結(jié)果婚禮上锰镀,老公的妹妹穿的比我還像新娘。我一直安慰自己咖刃,他們只是感情好泳炉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著嚎杨,像睡著了一般胡桃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上磕潮,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天翠胰,我揣著相機(jī)與錄音,去河邊找鬼自脯。 笑死之景,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膏潮。 我是一名探鬼主播锻狗,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼焕参!你這毒婦竟也來(lái)了轻纪?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤叠纷,失蹤者是張志新(化名)和其女友劉穎刻帚,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體涩嚣,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡崇众,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了航厚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顷歌。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖幔睬,靈堂內(nèi)的尸體忽然破棺而出眯漩,到底是詐尸還是另有隱情,我是刑警寧澤麻顶,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布赦抖,位于F島的核電站,受9級(jí)特大地震影響澈蚌,放射性物質(zhì)發(fā)生泄漏摹芙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一宛瞄、第九天 我趴在偏房一處隱蔽的房頂上張望浮禾。 院中可真熱鬧,春花似錦份汗、人聲如沸盈电。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匆帚。三九已至,卻和暖如春旁钧,著一層夾襖步出監(jiān)牢的瞬間吸重,已是汗流浹背互拾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嚎幸,地道東北人颜矿。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嫉晶,于是被迫代替她去往敵國(guó)和親骑疆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,090評(píng)論 1 32
  • 前言回顧 1.私有化: 命名的時(shí)候兩個(gè)下劃線開(kāi)頭 2.getter和settergetter - 想要[獲取]...
    不語(yǔ)sun閱讀 244評(píng)論 0 0
  • 一替废、復(fù)習(xí) 1. 私有化: 命名的時(shí)候兩個(gè)下劃線開(kāi)頭 2. getter和setter getter - 想要獲取屬...
    火星人_ef5b閱讀 200評(píng)論 0 0
  • 內(nèi)存管理 簡(jiǎn)述OC中內(nèi)存管理機(jī)制箍铭。與retain配對(duì)使用的方法是dealloc還是release,為什么椎镣?需要與a...
    丶逐漸閱讀 1,950評(píng)論 1 16
  • 上午诈火,王寶強(qiáng)離婚的消息爆出來(lái)后,我寫(xiě)了一篇關(guān)于此次事件的推文衣陶,主要想著眼點(diǎn)于此次事件能夠引起社會(huì)關(guān)注度如此之高的原...
    青梅煮酒話天涯閱讀 1,257評(píng)論 0 0