亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

python進階

廖雪峰 移動開發工程師
難度中級
時長 3小時33分
學習人數
綜合評分9.20
575人評價 查看評價
9.6 內容實用
9.0 簡潔易懂
9.0 邏輯清晰
  • class?Student(Person):
    ????__slots__?=?('score',)
    ????def?__init__(self,?name,?gender,?score):
    ????????super(Student,?self).__init__(name,?gender)
    ????????self.score?=?score
    從Person中繼承了,并新增加一個score的屬性


    查看全部
    0 采集 收起 來源:python中 __slots__

    2020-08-01

  • 使用?get/set?方法來封裝對一個屬性的訪問在許多面向對象編程的語言中都很常見。

    查看全部
    0 采集 收起 來源:python中 @property

    2020-08-01

  • Python的?decorator?本質上就是一個高階函數,它接收一個函數作為參數,然后,返回一個新函數。

    查看全部
  • 直接把?lambda?函數賦值給?self.get_grade?和綁定方法有所不同,函數調用不需要傳入?self,但是方法調用需要傳入?self。

    查看全部
  • 要讓?@log?自適應任何參數定義的函數,可以利用Python的?*args?和?**kw,保證任意個數的參數總是能正常調用:

    def?log(f):
    ????def?fn(*args,?**kw):
    ????????print?'call?'?+?f.__name__?+?'()...'
    ????????return?f(*args,?**kw)
    ????return?fn

    現在,對于任意函數,@log?都能正常工作。


    查看全部
  • 通過對比可以看出,匿名函數?lambda x: x * x?實際上就是:

    def?f(x):
    ????return?x?*?x

    關鍵字lambda?表示匿名函數,冒號前面的?x 表示函數參數。

    匿名函數有個限制,就是只能有一個表達式,不寫return,返回值就是該表達式的結果。


    查看全部
  • strip()? 去除字符列表內為空的元素(None,False,'\n'‘‘,等)


    查看全部
  • 如果要提高Python代碼的運行速度,最簡單的方法是把某些關鍵函數用?C?語言重寫,這樣就能大大提高執行速度。

    同樣的功能,StringIO?是純Python代碼編寫的,而?cStringIO?部分函數是?C?寫的,因此 cStringIO 運行速度更快。

    利用ImportError錯誤,我們經常在Python中動態導入模塊:

    try:
    ????from?cStringIO?import?StringIO
    except?ImportError:
    ????from?StringIO?import?StringIO

    上述代碼先嘗試從cStringIO導入,如果失敗了(比如cStringIO沒有被安裝),再嘗試從StringIO導入。這樣,如果cStringIO模塊存在,則我們將獲得更快的運行速度,如果cStringIO不存在,則頂多代碼運行速度會變慢,但不會影響代碼的正常執行。

    try?的作用是捕獲錯誤,并在捕獲到指定錯誤時執行?except?語句。


    查看全部
  • python3報錯,需要修改下:

    import?functools
    
    
    class?Student(object):
    
    ????def?__init__(self,?name,?score):
    ????????self.name?=?name
    ????????self.score?=?score
    
    ????def?__str__(self):
    ????????return?'(%s:?%s)'?%?(self.name,?self.score)
    
    ????__repr__?=?__str__
    
    ????#?重寫魔術方法?__cmp__?排序規則:按照分數從高到底排序,分數相同的按名字排序。
    ????#?python3?失效
    
    
    def?my_cmp(self,?s):
    ????if?self.score?>?s.score:
    ????????return?-1
    ????elif?self.score?<?s.score:
    ????????return?1
    ????else:
    ????????if?self.name?<?s.name:
    ????????????return?-1
    ????????elif?self.name?>?s.name:
    ????????????return?1
    ????????else:
    ????????????return?0
    
    
    L?=?[Student('Tim',?99),?Student('Bob',?88),?Student('Alice',?99)]
    print(sorted(L,?key=functools.cmp_to_key(my_cmp)))


    查看全部
    0 采集 收起 來源:python中 __cmp__

    2020-07-29

  • 傳入**kw?即可傳入任意數量的參數

    eg:
    ????def?__init__(self,?name,?gender,?**kw):????????self.name=name????????self.gender=gender????????for?k,?v?in?kw.iteritems():????????????setattr(self,?k,?v)


    查看全部
  • 像這種內層函數引用了外層函數的變量(參數也算變量),然后返回內層函數的情況,稱為閉包(Closure)。

    閉包的特點是返回的函數還引用了外層函數的局部變量,所以,要正確使用閉包,就要確保引用的局部變量在函數返回后不能變。

    查看全部
    0 采集 收起 來源:python中閉包

    2020-07-28

  • >>>?map(lambda?x:?x?*?x,?[1,?2,?3,?4,?5,?6,?7,?8,?9])
    [1,?4,?9,?16,?25,?36,?49,?64,?81]

    通過對比可以看出,匿名函數?lambda x: x * x?實際上就是:

    def?f(x):
    ????return?x?*?x

    關鍵字lambda?表示匿名函數,冒號前面的?x 表示函數參數。

    查看全部
  • @log('DEBUG')
    def?my_func():
    ????pass
    把上面的定義翻譯成高階函數的調用,就是:
    my_func?=?log('DEBUG')(my_func)
    再展開一下:
    log_decorator?=?log('DEBUG')
    my_func?=?log_decorator(my_func)
    所以,帶參數的log函數首先返回一個decorator函數,再讓這個decorator函數接收my_func并返回新函數
    查看全部
  • 任務

    改進一下前面定義的斐波那契數列:

    class?Fib(object):
    ???????

    請加一個__call__方法,讓調用更簡單:

    >>>?f?=?Fib()
    >>>?print?f(10)
    [0,?1,?1,?2,?3,?5,?8,?13,?21,?34]
    • ?不會了怎么辦

    • 要正確定義參數:__call__(self, num)

      參考代碼:

      class?Fib(object):
      ????def?__call__(self,?num):
      ????????a,?b,?L?=?0,?1,?[]
      ????????for?n?in?range(num):
      ????????????L.append(a)
      ????????????a,?b?=?b,?a?+?b
      ????????return?L
      
      f?=?Fib()
      print?f(10)


    查看全部
    0 采集 收起 來源:python中 __call__

    2020-07-27

  • 任務

    假設Person類通過__slots__定義了name和gender,請在派生類Student中通過__slots__繼續添加score的定義,使Student類可以實現name、gender和score?3個屬性。

    ?

    • ?不會了怎么辦

    • Student類的__slots__只需要包含Person類不包含的score屬性即可。

      參考代碼:

      class?Person(object):
      ????__slots__?=?('name',?'gender')
      ????def?__init__(self,?name,?gender):
      ????????self.name?=?name
      ????????self.gender?=?gender
      
      class?Student(Person):
      ????__slots__?=?('score',)
      ????def?__init__(self,?name,?gender,?score):
      ????????super(Student,?self).__init__(name,?gender)
      ????????self.score?=?score
      
      s?=?Student('Bob',?'male',?59)
      s.name?=?'Tim'
      s.score?=?99
      print?s.score


    查看全部
    0 采集 收起 來源:python中 __slots__

    2020-07-27

舉報

0/150
提交
取消
課程須知
本課程是Python入門的后續課程 1、掌握Python編程的基礎知識 2、掌握Python函數的編寫 3、對面向對象編程有所了解更佳
老師告訴你能學到什么?
1、什么是函數式編程 2、Python的函數式編程特點 3、Python的模塊 4、Python面向對象編程 5、Python強大的定制類

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!