2019-05-08day16總結(jié)

class Lyric:
def init(self, word):
self._time = 0
self.word = word

@property
def time(self):
    return self._time
@time.setter
def time(self, value):
    # value = '[00:22:34]'
    fen = float(value[1:3])
    miao = float(value[4:])
    self._time = fen * 60 + miao

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

class LyricAnalysis:

def __init__(self, name):
    self.name = name
    self.all_lyric = []
# def analysis_file(self):

# 需要: 歌名
def get_world(self, time):
    if not self.all_lyric:

    # 1.解析歌詞文件中的內(nèi)容
        with open('files/%s.txt' % self.name, 'r', encoding='utf-8') as f:
            while True:
                # 讀一行內(nèi)容
                line = f.readline()
                # 切字符串
                lines = line.split(']')
                # 遍歷時(shí)間創(chuàng)建歌詞對象
                for time_str in lines[:-1]:
                    lyric_obj = Lyric(lines[-1])
                    lyric_obj.time = time_str
                    # print(lyric_obj.__dict__)
                    self.all_lyric.append(lyric_obj)

                if not line:
                    break
    # 2.當(dāng)前歌的歌詞按時(shí)間排序
    self.all_lyric.sort(reverse=True, key=lambda item: item.time)
    # print(self.all_lyric)
    # 3.根據(jù)時(shí)間找對應(yīng)的歌詞
    for item in self.all_lyric:
        if item.time < time:
            return item.word
    return self.name

l1 = LyricAnalysis('藍(lán)蓮花')

print(l1.get_world(10))

"""
python中所有數(shù)據(jù)類型都是類爽航,數(shù)據(jù)都是對象揽祥。

所有的運(yùn)算符對應(yīng)的操作本質(zhì)都是在調(diào)用數(shù)據(jù)類型對應(yīng)的魔法方法。(沒個(gè)運(yùn)算符都對應(yīng)一個(gè)魔法方法)
"""
class Student:
def init(self, name, age=0, score=0):
self.name = name
self.age = age
self.score = score

# 重載加法運(yùn)算符
# self + other = return 返回值
def __add__(self, other):
    return self.age + other.age

# 重載乘法運(yùn)算符
def __mul__(self, other: int):
    return self.score * other


# def __gt__(self, other):
#     return self.score > other.score

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

def __lt__(self, other):
    return self.score < other.score

# 注意: >和<只需要重載一個(gè)

stu1 = Student('小明', 19, 22)
stu2 = Student('小米', 44, 45)
print(stu1 + stu2)
print(stu1 * 10)
print(stu1 < stu2)

all_student = [stu1, stu2, Student('小號', 34, 43), Student('小米', 11, 22)]
print(all_student)

練習(xí): 讓Student的對象支持乘法運(yùn)算贷揽,運(yùn)算規(guī)則是:

<name: 張三集乔, age:10, score:0> * 3 = [<name: 張三, age:10, score:0>, <name: 張三, age:10, score:0>, <name: 張三, age:10, score:0>]

class Student:
def init(self, name='張三', age=10, score=0):
self.name = name
self.age = age
self.score = score
def mul(self, other):
return self.name * 3, self.age * 3, self.score * 3

import copy

class Dog:
def init(self, name, color='黃色'):
self.name = name
self.color = color

class Student:
def init(self, name, age=0, score=0):
self.name = name
self.age = age
self.score = score
self.dog = None

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

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

stu1 = Student('張三', 18, 90)
print(stu1)

result = stu1 * 2
print(result)

print('===================深拷貝和淺拷貝=================')
print("直接賦值")

1.一個(gè)變量直接給另外一個(gè)變量賦值:直接將地址賦值,賦完后兩個(gè)變量指向同一塊內(nèi)存區(qū)域,并且相互影響

stu2 = Student('Lisa', 18, 69)
stu3 = stu2
print(id(stu2), id(stu3))

stu2.age = 28
print(stu3.dict)

2.淺拷貝和深拷貝(面試點(diǎn)!!)

"""
拷貝原理:將被拷貝的對象復(fù)制一份闸昨,產(chǎn)生一個(gè)新的數(shù)據(jù),然后將新的數(shù)據(jù)的地址返回

a.淺拷貝
1)列表或字典的copy方法是淺拷貝、切片也是淺拷貝
2)copy.copy(對象) - 復(fù)制指定的對象薄风,產(chǎn)生一個(gè)新的對象(不會復(fù)制子對象)

b.深拷貝
copy.deepcopy(對象) - 復(fù)制指定的對象饵较,產(chǎn)生一個(gè)新的對象。如果這個(gè)對象中有其他的對象遭赂,子對象也會被復(fù)制
"""
print('======淺拷貝=======')
stu2 = Student('Lisa', 18, 69)

stu3 = stu2

print("======深拷貝=======")
stu2 = Student('Lisa', 18, 69)
stu4 = copy.copy(stu2)

1.數(shù)據(jù)的存儲(內(nèi)存開辟)

"""
python的變量都存儲在棧區(qū)間循诉,對象都在堆區(qū)間。

聲明變量或者給變量賦值撇他,是先在內(nèi)存中(堆)中開辟存儲數(shù)據(jù)茄猫,然后將數(shù)據(jù)地址保存在變量中。
但是數(shù)字和字符串特殊,如果是用數(shù)字或者字符串給變量賦值,他不會直接開辟空間保存數(shù)據(jù)困肩,
而是先在內(nèi)存中檢查這個(gè)數(shù)據(jù)之前是否已經(jīng)存儲過,如果已經(jīng)存儲划纽,直接用上次保存的數(shù)據(jù),沒有存儲才會開辟新的空間保存數(shù)據(jù)
"""

list1 = [1, 2]
list2 = [1, 2]
print(id(list1), id(list2))
num1 = {}
num2 = {}
print(id(num1), id(num2))
num3 = 99999999999999999999999999999999999999
num4 = 99999999999999999999999999999999999999
print(id(num3), id(num4))

2.內(nèi)存的釋放

"""
1)引用計(jì)數(shù)
python中每個(gè)對象都有一個(gè)屬性叫引用計(jì)數(shù),用來保存當(dāng)前對象的引用的個(gè)數(shù)。

python中的垃圾回收機(jī)制來判斷一個(gè)對象是否銷毀,就看這個(gè)對象的引用技術(shù)是否為零,如果為零就被銷毀
"""
from sys import getrefcount
print('=========引用計(jì)數(shù)========')
list1 = [1, 2]
print(getrefcount(list1))

讓引用計(jì)數(shù)增加

list2 = list1
print(getrefcount(list1))
dict1 = {'a': list2}
print(getrefcount(list1))

num = 100

print(getrefcount(num))

num1 = 100

print(getrefcount(num1))

讓引用計(jì)數(shù)減少

print(getrefcount(list1))
list2 = 100
print(getrefcount(list1))
del dict1['a']
print(getrefcount(list1))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锌畸,一起剝皮案震驚了整個(gè)濱河市勇劣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌潭枣,老刑警劉巖比默,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盆犁,居然都是意外死亡命咐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門谐岁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來醋奠,“玉大人,你說我怎么就攤上這事伊佃〈芩荆” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵锭魔,是天一觀的道長例证。 經(jīng)常有香客問我,道長迷捧,這世上最難降的妖魔是什么织咧? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任胀葱,我火速辦了婚禮,結(jié)果婚禮上笙蒙,老公的妹妹穿的比我還像新娘抵屿。我一直安慰自己,他們只是感情好捅位,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布轧葛。 她就那樣靜靜地躺著,像睡著了一般艇搀。 火紅的嫁衣襯著肌膚如雪尿扯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天焰雕,我揣著相機(jī)與錄音衷笋,去河邊找鬼。 笑死矩屁,一個(gè)胖子當(dāng)著我的面吹牛辟宗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吝秕,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼泊脐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烁峭?” 一聲冷哼從身側(cè)響起容客,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎则剃,沒想到半個(gè)月后耘柱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡棍现,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了镜遣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片己肮。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖悲关,靈堂內(nèi)的尸體忽然破棺而出谎僻,到底是詐尸還是另有隱情,我是刑警寧澤寓辱,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布艘绍,位于F島的核電站,受9級特大地震影響秫筏,放射性物質(zhì)發(fā)生泄漏诱鞠。R本人自食惡果不足惜挎挖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望航夺。 院中可真熱鬧蕉朵,春花似錦、人聲如沸阳掐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缭保。三九已至汛闸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間艺骂,已是汗流浹背诸老。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留彻亲,地道東北人孕锄。 一個(gè)月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像苞尝,于是被迫代替她去往敵國和親畸肆。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

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

  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 2,753評論 0 8
  • 8月22日-----字符串相關(guān) 2-3 個(gè)性化消息: 將用戶的姓名存到一個(gè)變量中宙址,并向該用戶顯示一條消息轴脐。顯示的消...
    future_d180閱讀 971評論 0 1
  • 一、面向?qū)ο缶幊叹幊趟枷耄?.面向過程編程 ---> 算法抡砂,邏輯(數(shù)學(xué)邏輯)2.函數(shù)式編程 ---> 函數(shù)大咱,模塊3...
    Smr_T閱讀 515評論 0 0
  • """1.靜態(tài)方法和類方法、對象方法對象方法:a.直接聲明在類中b.自帶的self參數(shù)c.對象來調(diào)用d.實(shí)現(xiàn)函數(shù)的...
    我才是鱷魚寶寶閱讀 296評論 0 0
  • 一注益、類的繼承python中類支持繼承碴巾,并且支持多繼承 1.什么是繼承父類(超類):被繼承的類子類:去繼承父類的類繼...
    Smr_T閱讀 144評論 0 0