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

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

python進階

廖雪峰 移動開發工程師
難度中級
時長 3小時33分
學習人數
綜合評分9.20
575人評價 查看評價
9.6 內容實用
9.0 簡潔易懂
9.0 邏輯清晰
  • 任務

    請給Person類的__init__方法中添加name和score參數,并把score綁定到__score屬性上,看看外部是否能訪問到。

    ?

    • ?不會了怎么辦

    • 以雙下劃線開頭的屬性無法被外部訪問,"__xxx__"除外。

      參考代碼:

      class?Person(object):
      ????def?__init__(self,?name,?score):
      ????????self.name?=?name
      ????????self.__score?=?score
      
      p?=?Person('Bob',?59)
      
      print?p.name
      print?p.__score


    查看全部
  • 任務

    請定義Person類的__init__方法,除了接受?name、gender?和?birth?外,還可接受任意關鍵字參數,并把他們都作為屬性賦值給實例。

    ?

    • ?不會了怎么辦

    • 要定義關鍵字參數,使用?**kw;

      除了可以直接使用self.name = 'xxx'設置一個屬性外,還可以通過?setattr(self, 'name', 'xxx')?設置屬性。

      參考代碼:

      class?Person(object):
      ????def?__init__(self,?name,?gender,?birth,?**kw):
      ????????self.name?=?name
      ????????self.gender?=?gender
      ????????self.birth?=?birth
      ????????for?k,?v?in?kw.iteritems():
      ????????????setattr(self,?k,?v)
      xiaoming?=?Person('Xiao?Ming',?'Male',?'1990-1-1',?job='Student')
      print?xiaoming.name
      print?xiaoming.job


    查看全部
  • 順序:,x1 < x2(第一個元素小于第二個) 返回-1;

    倒序:,x1 < x2(第一個元素小于第二個) 返回1;

    查看全部
  • int(數字) ?會計算出取整數后的值,默認十進制,向下取整
    判斷一個數的平方根是否是整數:math.sqrt(x)==int(math.sqrt(x))

    查看全部
  • map():一個參數,是對所有元素調用f,生成新list

    reduce():兩個參數

    reduce(function,?iterable[,?initializer])

    ,顯示第一二調用f,再結果和第三調用f,以此類推

    filter():一個參數,過濾不符合條件的元素,符合條件的組成新的list


    查看全部
  • p1.get_grade?返回的是一個函數對象,但這個函數是一個綁定到實例的函數,p1.get_grade()?才是方法調用。

    查看全部
  • sum(iterable[,?start])

    iterable -- 可迭代對象,如:列表、元組、集合。

    反例:

    print? ?map(sum,[1,2,3])??

    運行后報錯:TypeError:?'int'?object?is?not?iterable

    查看全部
  • import functools


    def cmp_ignore_case(s1, s2):

    ? ? str1=s1.upper()

    ? ? str2=s2.upper()

    ? ??

    ? ? if str1 < str2:

    ? ? ? ? return -1

    ? ? if str1 > str2:

    ? ? ? ? return 1

    ? ? return 0


    sorted_ignore_case = functools.partial(sorted,cmp=cmp_ignore_case)



    print sorted_ignore_case(['bob', 'about', 'Zoo', 'Credit'])


    查看全部
    0 采集 收起 來源:python中偏函數

    2020-07-20

  • 任務

    請定義Person類的__init__方法,除了接受?name、gender?和?birth?外,還可接受任意關鍵字參數,并把他們都作為屬性賦值給實例。

    ?

    • ?不會了怎么辦

    • 要定義關鍵字參數,使用?**kw;

      除了可以直接使用self.name = 'xxx'設置一個屬性外,還可以通過?setattr(self, 'name', 'xxx')?設置屬性。

      參考代碼:

      class?Person(object):
      ????def?__init__(self,?name,?gender,?birth,?**kw):
      ????????self.name?=?name
      ????????self.gender?=?gender
      ????????self.birth?=?birth
      ????????for?k,?v?in?kw.iteritems():
      ????????????setattr(self,?k,?v)
      xiaoming?=?Person('Xiao?Ming',?'Male',?'1990-1-1',?job='Student')
      print?xiaoming.name
      print?xiaoming.job


    查看全部
  • 任務

    請創建包含兩個?Person?類的實例的?list,并給兩個實例的?name?賦值,然后按照?name?進行排序。

    • ?不會了怎么辦

    • sorted()?是高階函數,接受一個比較函數。

      參考代碼:

      class?Person(object):
      ????pass
      p1?=?Person()
      p1.name?=?'Bart'
      
      p2?=?Person()
      p2.name?=?'Adam'
      
      p3?=?Person()
      p3.name?=?'Lisa'
      
      L1?=?[p1,?p2,?p3]
      L2?=?sorted(L1,?lambda?p1,?p2:?cmp(p1.name,?p2.name))
      
      print?L2[0].name
      print?L2[1].name
      print?L2[2].name


    查看全部
  • 任務

    請練習定義Person類,并創建出兩個實例,打印實例,再比較兩個實例是否相等。

    ?

    • ?不會了怎么辦

    • 要打印實例,直接使用print語句;

      要比較兩個實例是否相等,用==操作符。

      參考代碼:

      class?Person(object):
      ????pass
      xiaoming?=?Person()
      xiaohong?=?Person()
      print?xiaoming
      print?xiaohong
      print?xiaoming?==?xiaohong


    查看全部
  • 任務

    在Python 3.x中,字符串統一為unicode,不需要加前綴?u,而以字節存儲的str則必須加前綴?b。請利用__future__的unicode_literals在Python 2.7中編寫unicode字符串。

    ?

    • ?不會了怎么辦

    • 使用from __future__ import unicode_literals將把Python 3.x的unicode規則帶入Python 2.7中。

      參考代碼:

      from?__future__?import?unicode_literals
      s?=?'am?I?an?unicode?'
      print?isinstance(s,?unicode)


    查看全部
  • 任務

    利用import ... as ...,還可以動態導入不同名稱的模塊。

    Python 2.6/2.7提供了json?模塊,但Python 2.5以及更早版本沒有json模塊,不過可以安裝一個simplejson模塊,這兩個模塊提供的函數簽名和功能都一模一樣。

    試寫出導入json?模塊的代碼,能在Python 2.5/2.6/2.7都正常運行。

    • ?不會了怎么辦

    • 先嘗試導入json,如果失敗,再嘗試導入simplejson as json

      參考代碼:

      try:
      ????import?json
      except?ImportError:
      ????import?simplejson?as?json
      print?json.dumps({'python':2.7})


    查看全部
  • Python的os.path模塊提供了?isdir()?和?isfile()函數,請導入該模塊,并調用函數判斷指定的目錄和文件是否存在。

    注意:?

    1.?由于運行環境是平臺服務器,所以測試的也是服務器中的文件夾和文件,該服務器上有/data/webroot/resource/python文件夾和/data/webroot/resource/python/test.txt文件,大家可以測試下。

    2. 當然,大家可以在本機上測試是否存在相應的文件夾和文件。

    import?os
    print?os.path.isdir(r'C:\Windows')
    print?os.path.isfile(r'C:\Windows\notepad.exe')
    • ?不會了怎么辦

    • 注意到os.path模塊可以以若干種方式導入:

      import?os
      import?os.path
      from?os?import?path
      from?os.path?import?isdir,?isfile

      每一種方式調用?isdir?和?isfile?都有所不同。

      參考代碼:

      import?os
      print?os.path.isdir(r'/data/webroot/resource/python')
      print?os.path.isfile(r'/data/webroot/resource/python/test.txt')


    查看全部
  • 任務

    在第7節中,我們在sorted這個高階函數中傳入自定義排序函數就可以實現忽略大小寫排序。請用functools.partial把這個復雜調用變成一個簡單的函數:

    sorted_ignore_case(iterable)
    • ?不會了怎么辦

    • 要固定sorted()的cmp參數,需要傳入一個排序函數作為cmp的默認值。

      參考代碼:

      import?functools
      sorted_ignore_case?=?functools.partial(sorted,?cmp=lambda?s1,?s2:?cmp(s1.upper(),?s2.upper()))
      print?sorted_ignore_case(['bob',?'about',?'Zoo',?'Credit'])


    查看全部
    0 采集 收起 來源:python中偏函數

    2020-07-16

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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