day013 筆記 07-31

生成器(generator)和迭代器(iterator):

生成器:a.可以看成是一個可以存儲多個數(shù)據(jù)的容器咕宿。需要里面的數(shù)據(jù)的時候就生成一個汁蝶,里面的數(shù)據(jù)只能從前往后一個一個的生成
不能跳躍,也不能從后往前枫吧。生成的數(shù)據(jù)躺苦,不能再生成了
b.獲取生成器里面的數(shù)據(jù),需要使用next()方法
c.只要函數(shù)中有yield關(guān)鍵字诗越,函數(shù)就不再是一個單純的函數(shù)了,而變成一個生成器臼氨。

和列表比較:列表存數(shù)據(jù)掺喻,數(shù)據(jù)必須是實實在在存在的數(shù)據(jù),一個數(shù)據(jù)會戰(zhàn)一定的內(nèi)存空間储矩。
生成器存數(shù)據(jù)感耙,存的是產(chǎn)生數(shù)據(jù)的算法,沒有數(shù)據(jù)去占內(nèi)存空間

def fio(n):
    pre_1 = 1
    pre_2 = 1
    for x in range(1, n):
        if x == 1 or x == 2:
            current = 1
            yield current
            continue
        current = pre_1 + pre_2
        pre_1, pre_2 = pre_2, current
        yield current


fio = fio(10)
print(fio)
print(fio.__next__())
print(fio.__next__())
print(fio.__next__())
print(fio.__next__())
print(fio.__next__())
print(fio.__next__())
print(fio.__next__())
print(fio.__next__())

類和對象

1.什么是類:對擁有相同熟悉的方法的對象的封裝
2.什么是對象:對象就是類的實例

類的聲明:
class 類名(父類):
屬性
方法

class:python中聲明類的關(guān)鍵字
類名:駝峰式命名
():類要繼承的其他的類持隧,需要寫括號即硼,里面的內(nèi)容是父類的名字÷挪Γ可以省略
屬性:對象屬性和類的字段 -- 保存數(shù)據(jù)
方法:是指就是聲明在類中的函數(shù) -- 實現(xiàn)功能

對象屬性的增刪改查:
1.增:
對象.屬性 = 值(屬性不存在)

2.刪:
方法Ⅰ:del 對象.屬性
方法Ⅱ:對象.delattr('屬性名')

3.改:
方法Ⅰ:對象.屬性 = 新值
方法Ⅱ:對象.setattr(屬性名, 新值) 和 setattr(對象, 屬性名, 新值)

4.查:
方法Ⅰ:對象.屬性(如果屬性不存在只酥,會報錯)
print(p1.age)
方法Ⅱ:對象.getattribute('屬性名') 和 getattr(對象, 屬性名, 默認(rèn)值)
print(p1.getattribute('age'))
print(getattr(p1, 'age', '無名'))

slots魔法:

屬性:對象的屬性(屬性)、類的屬性(類的字段)
對象屬性:屬于對象的呀狼,不同對象對應(yīng)的值可能不一樣
類的字段:聲明在類里面裂允,函數(shù)外面。類的屬性屬于類(類的字段哥艇,通過類來使用)

方法:對象方法(方法)绝编、類方法、靜態(tài)函數(shù)
對象方法:自帶一個self參數(shù)貌踏,一般通過對象去調(diào)用
類方法:1.使用@classmethod來修飾
2.自帶一個cls參數(shù)十饥,并且這個參數(shù)不用傳參,誰來調(diào)用這個方法祖乳,cls就指向誰
3.類方法要通過類來調(diào)用
靜態(tài)方法:1.使用@staticmethod
2.沒有默認(rèn)參數(shù)
3.靜態(tài)方法通過類來調(diào)用

怎么選擇用對象方法逗堵、類方法、靜態(tài)方法
if 如果實現(xiàn)函數(shù)需要使用對象的屬性眷昆,就聲明成對象方法

elif 如果實現(xiàn)函數(shù)的功能需要使用類的字段或者調(diào)用類的方法蜒秤,就聲明成類方法

else 如果實現(xiàn)函數(shù)功能不需要使用對象的屬性也不需要類的字段汁咏,就聲明成靜態(tài)方法

class Person:
    # number 是類的字段
    number = 0

    # 約束類中的對象的屬性即屬性只能在__slots__中選,可少不可多
    __slots__ = ('name', 'age', 'sex')
    """
    對象屬性的聲明:
    class 類名:
        def __init__(self):
            self.屬性1 = 初值
            self.屬性2 = 初值

    init方法是系統(tǒng)自帶的一個方法作媚,這個方法不能直接調(diào)用梆暖,通過類創(chuàng)建對象的時候系統(tǒng)會自動調(diào)用這個方法
    init方法的作用是對對象的屬性進(jìn)行初始化
    通過構(gòu)造方法創(chuàng)建對象的時候,一定要保證掂骏,init方法除了self以外,其他的參數(shù)都必須有值
    """

    def __init__(self, name, age):
        # 在這個地方聲明對象的屬性
        print('======')
        print(name)
        # 在init方法聲明對象的屬性
        """
        name厚掷、age弟灼、sex就是Person這個類的對象屬性。類的對象屬性冒黑,徐婭通過對象來使用
        """
        self.name = name
        self.age = age
        self.sex = 'Female'

    # 自定義對象的打印格式
    def __str__(self):
        return self.name + ',' + str(self.age)

    """
    對象方法默認(rèn)都有一個參數(shù)self田绑,在調(diào)用方法的時候,這個參數(shù)不用傳參(系統(tǒng)會自動給self傳參)
    誰來調(diào)用這個方法抡爹,self就是誰
    """

    # 聲明兩個對象方法掩驱,需要使用對象來調(diào)用
    def eat(self):
        print('Eating')

    def sleep(self):
        print('Sleeping, ??')


class Student:
    def __init__(self, name='Rocky', sex='Female', age=18):
        self.name = name
        self.sex = sex
        self.age = age

    def study(self, subject):
        print('I need to study ' + subject + ' to improve myself !')

    @classmethod
    def for_future(cls):
        # cls指向的是調(diào)用這個方法的類,cls可以當(dāng)成類來使用
        s = cls('張三')
        print(s.sex)
        print('good good study day day up')

    @staticmethod
    def for_a_better_life():
        pass


class Class:
    def __init__(self, name='', students=[]):
        self.name = name
        self.students = students

    def add_student(self):
        name = input('name:')
        age = input('age:')
        stu = Student(name, int(age))
        self.students.append(stu)


class MathOperation:
    @staticmethod
    def add(a, b):
        return a + b

    @staticmethod
    def sub(a, b):
        return a - b

    @staticmethod
    def mul(a, b):
        return a * b

    @staticmethod
    def dev(a, b):
        return a / b


if __name__ == '__main__':
    # print(Person.number)
    # # # 構(gòu)造方法中的參數(shù)實質(zhì)是傳給init方法的參數(shù)
    # p1 = Person('Ye Hao', 18)
    # print(p1)
    # # print('======')
    #
    # Student.for_future()
    # s1 = Student()
    # # 獲取姓名冬竟、性別欧穴、年齡
    # print('方式1:')
    # print(s1.name, s1.sex, s1.age)
    # print('方式2:')
    # print(s1.__getattribute__('name'), s1.__getattribute__('sex'), s1.__getattribute__('age'))
    # print(getattr(s1, 'name'), getattr(s1, 'sex'), getattr(s1, 'age'))
    # # 添加屬性
    # s1.__setattr__('tel', '13245678910')
    # print(s1.tel)
    # # 修改學(xué)生年齡
    # s1.age = 22
    # print(s1.age)
    # # 刪除學(xué)生性別
    # del s1.sex
    # # print(s1.sex)
    # s1.study('math')
    pass
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市泵殴,隨后出現(xiàn)的幾起案子涮帘,更是在濱河造成了極大的恐慌,老刑警劉巖笑诅,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件调缨,死亡現(xiàn)場離奇詭異,居然都是意外死亡吆你,警方通過查閱死者的電腦和手機弦叶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妇多,“玉大人伤哺,你說我怎么就攤上這事∑霭穑” “怎么了默责?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長咸包。 經(jīng)常有香客問我桃序,道長,這世上最難降的妖魔是什么烂瘫? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任媒熊,我火速辦了婚禮奇适,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芦鳍。我一直安慰自己嚷往,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布柠衅。 她就那樣靜靜地躺著皮仁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菲宴。 梳的紋絲不亂的頭發(fā)上贷祈,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音喝峦,去河邊找鬼势誊。 笑死,一個胖子當(dāng)著我的面吹牛谣蠢,可吹牛的內(nèi)容都是我干的粟耻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼眉踱,長吁一口氣:“原來是場噩夢啊……” “哼挤忙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起勋锤,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤饭玲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后叁执,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茄厘,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年谈宛,在試婚紗的時候發(fā)現(xiàn)自己被綠了次哈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡吆录,死狀恐怖窑滞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情恢筝,我是刑警寧澤哀卫,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站撬槽,受9級特大地震影響此改,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侄柔,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一共啃、第九天 我趴在偏房一處隱蔽的房頂上張望占调。 院中可真熱鬧,春花似錦移剪、人聲如沸究珊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剿涮。三九已至,卻和暖如春攻人,著一層夾襖步出監(jiān)牢的瞬間幔虏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工贝椿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人陷谱。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓烙博,卻偏偏與公主長得像,于是被迫代替她去往敵國和親烟逊。 傳聞我的和親對象是個殘疾皇子渣窜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

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

  • 前言 人生苦多,快來 Kotlin 宪躯,快速學(xué)習(xí)Kotlin乔宿! 什么是Kotlin? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,201評論 9 118
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,097評論 1 32
  • 我今天去哪兒老師那兒彈琴访雪。彈得可開心啦详瑞。 所以我彈的曲子很多比如,慶翻身臣缀、小奏鳴曲坝橡、快步、練習(xí)曲精置。...
    大度_e009閱讀 156評論 0 0
  • 晉然最近很是惆悵计寇,好不容易追到雪兒,還沒怎么甜蜜兩天脂倦,雪兒就去參加那什么培訓(xùn)班番宁,學(xué)業(yè)務(wù)去了。每次打電話給...
    歌琳兒閱讀 311評論 1 1
  • 一赖阻、 我的感受和收獲5骸! 截止今日今時政供,我進(jìn)視界窗已有一年兩個月零6天播聪,在這一年中有苦有樂有歡笑朽基!在視界窗平頂山...
    文軒雨蔚閱讀 176評論 4 4