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

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

python進階

廖雪峰 移動開發工程師
難度中級
時長 3小時33分
學習人數
綜合評分9.20
575人評價 查看評價
9.6 內容實用
9.0 簡潔易懂
9.0 邏輯清晰
  • 因為一個數最大的因數是其本身,即 x / 1 = x,再次就是它的一半。

    所以通過反復比較a,b兩個數,當a除以b余數為0時,即找到了它們之間的最大公約數。

    比如:gcd(25,15)=>gcd(15,10)=>gcd(10,5)=>gcd(5,0),返回的a值5就是結果。

    再如:gcd(15,25)=>gcd(25,15)=>gcd(15,10)=>gcd(10,5)=>gcd(5,0)


    查看全部
  • for k, v in kw.iteritems():

    ? ? ? ? ? ? setattr(self, k, v)

    **kw,本質是個dict對象,for in 通過dict的iteritems迭代器循環中會讀取出key 和 value ,key是dict的key,value則是對應值

    查看全部
  • 每層函數的參數都是不同的,第一層函數的參數是傳入要打印的字符串,第二層函數的參數是原函數,第三層函數的參數是原函數的參數;定義兩層的話,應該就只能打印固定的字符串了?

    查看全部
  • s.strip(rm) 刪除 s 字符串中開頭、結尾處的 rm 序列的字符。

    當rm為空時,默認刪除空白符(包括'\n', '\r', '\t', ' '),如下:

    a?=?'?????123'
    a.strip()

    結果:?'123'

    a='\t\t123\r\n'
    a.strip()

    結果:'123'


    查看全部
  • 計算平方根可以用函數:

    >>>?math.sqrt(2)
    1.4142...


    查看全部
  • 所有的函數都是可調用對象。

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

    2020-06-03

  • 一定要用 super(Student, self).__init__(name, gender) 去初始化父類

    查看全部
  • 如果一個屬性由雙下劃線開頭(__),該屬性就無法被外部訪問

    查看全部
  • def format_name(s):

    ? ? return s[0].upper()+s[1:].lower()


    print map(format_name, ['adam', 'LISA', 'barT'])


    查看全部
  • 計算平方根

    math.sqrt(2)


    查看全部
  • Python 3.x已經改進了整數的除法運算,“/”除將得到浮點數,“//”除才仍是整數:

    >>>?10?/?3
    3.3333333333333335
    >>>?10?//?3
    3

    要在Python 2.7中引入3.x的除法規則,導入__future__的division:

    >>>?from?__future__?import?division
    >>>?print?10?/?3
    3.3333333333333335

    當新版本的一個特性與舊版本不兼容時,該特性將會在舊版本中添加到__future__中,以便舊的代碼能在舊版本中測試新特性。


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

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

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

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



    查看全部
  • 如果遇到名字沖突怎么辦?比如math模塊有一個log函數,logging模塊也有一個log函數,如果同時使用,如何解決名字沖突?

    如果使用import導入模塊名,由于必須通過模塊名引用函數名,因此不存在沖突:

    import?math,?logging
    print?math.log(10)???#?調用的是math的log函數logging.log(10,?'something')???#?調用的是logging的log函數

    如果使用?from...import?導入?log?函數,勢必引起沖突。這時,可以給函數起個“別名”來避免沖突:

    from?math?import?log
    from?logging?import?log?as?logger???#?logging的log現在變成了loggerprint?log(10)???#?調用的是math的loglogger(10,?'import?from?logging')???#?調用的是logging的log


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

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

    使用匿名函數,可以不必定義函數名,直接創建一個函數對象,很多時候可以簡化代碼:

    >>>?sorted([1,?3,?9,?5,?0],?lambda?x,y:?-cmp(x,y))
    [9,?5,?3,?1,?0]

    返回函數的時候,也可以返回匿名函數:

    >>>?myabs?=?lambda?x:?-x?if?x?<?0?else?x?
    >>>?myabs(-1)
    1
    >>>?myabs(1)
    1


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

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

    #?希望一次返回3個函數,分別計算1x1,2x2,3x3:def?count():
    ????fs?=?[]
    ????for?i?in?range(1,?4):
    ????????def?f():
    ?????????????return?i*i
    ????????fs.append(f)
    ????return?fs
    
    f1,?f2,?f3?=?count()

    你可能認為調用f1(),f2()和f3()結果應該是1,4,9,但實際結果全部都是?9(請自己動手驗證)。

    原因就是當count()函數返回了3個函數時,這3個函數所引用的變量 i?的值已經變成了3。由于f1、f2、f3并沒有被調用,所以,此時他們并未計算 i*i,當 f1 被調用時:

    >>>?f1()
    9?????#?因為f1現在才計算i*i,但現在i的值已經變為3

    因此,返回函數不要引用任何循環變量,或者后續會發生變化的變量。


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

    2020-05-27

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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