python小知識點

python小知識點

傳遞元組

  • 一個函數(shù)中返回兩個不同的值

  • 案例:

      >>> def get_error_details():
          return (2,"details");
      
      >>> 
      >>> errnum,errstr = get_error_details();
      >>> errnum
      2
      >>> errstr
      'details'
      >>>
    
  • 注意

    • a,b=<some expression>的用法會將表達式的結(jié)果解釋為具有兩個值的一個元組。這也意味著在Python中交換兩個變量的最快方法是:

        >>> a=5;b=9;
        >>> a,b
        (5, 9)
        >>> a,b=b
        >>> a,b=b,a
        >>> a,b
        (9, 5)
        >>> 
      

特殊方法

  • 諸如initdel等一些方法對于類來說有特殊意義瑞佩;特殊方法用來模擬內(nèi)置類的某些行為
  • 如果你想了解所有的特殊方法来吩,請參閱手冊

單語句塊

  • 案例:

      >>> flag = True;
      >>> if flag:print('Yes');
      
      Yes
      >>> 
    
  • 單個語句是原地立即使用的,它不會被看作是一個單獨的塊。


Lambda表格

  • lambda語句可以創(chuàng)建一個新的函數(shù)對象迅办。從本質(zhì)上說蛔添,lambda需要一個參數(shù),后跟一個表達式作為函數(shù)體姻报,這一表達式執(zhí)行的值將作為這個新函數(shù)的返回值

  • 案例:

      points = [{'x':2,'y':3},
                {'x':4,'y':1}];
      points.sort(key=lambda i: i['y']);
      print(points);
      C:\Users\Administrator\Desktop>python hello.py
      [{'x': 4, 'y': 1}, {'x': 2, 'y': 3}]
    
    • 要注意到一個list的sort方法可以獲得一個key參數(shù)己英,用以決定列表的排序方式。在我們的案例中吴旋,我們希望進行一次自定義排序损肛,為此我們需要編寫一個函數(shù)厢破,但是又不是為函數(shù)編寫一個獨立的def塊,只在這一個地方使用治拿,因此我們使用Lambda表達式來創(chuàng)建一個新函數(shù)

列表推導

  • 列表推導(List Comprehension)用于從一份現(xiàn)有的列表中得到一份新列表

  • 案例:

      listone=[2,3,4];
      listtwo=[2*i for i in listone if i>2];
      print(listtwo);
      C:\Users\Administrator\Desktop>python hello.py
      [6, 8]
    
  • 當滿足了某些條件時(if i>2),我們進行指定的操作(2*i)摩泪,以此來獲得一份新的列表。要注意到原始列表依舊保持不變


在函數(shù)中接受元組與字典

  • 有一種特殊方法忍啤,即分別用*或**作為元組或字典的前綴加勤,來使它們作為一個參數(shù)為函數(shù)所接收。當函數(shù)需要一個可變數(shù)量的實參時同波,這將頗為有用

  • 案例:

      >>> def powersum(power,*argv):
          total = 0;
          for i in argv:
              total += pow(i,power);
      
          return total;
      
      >>> powersum(2,3,4)
      25
    
    • 因為我們在args變量前添加了一個*前綴鳄梅,函數(shù)的所有額外參數(shù)都將傳遞到argv中,并作為一個元組予以存儲

assert語句

  • assert語句用以斷言某事是真的未檩。如果其不是真的戴尸,就拋出一個錯誤

  • 案例:

      >>> mylist=['ab','ff'];
      >>> assert len(mylist)>=2;
      >>> mylist.pop();
      'ff'
      >>> assert len(mylist)>=2
      Traceback (most recent call last):
        File "<pyshell#30>", line 1, in <module>
          assert len(mylist)>=2
      AssertionError
      >>> 
    

裝飾器

  • 裝飾器(Decorators)是應用包裝函數(shù)的快捷方式。這有助于將某一功能與一些代碼一遍又一遍地“包裝”

  • 舉個例子冤狡,我為自己創(chuàng)建了一個retry裝飾器孙蒙,這樣我可以將其運用到任何函數(shù)之中,如果在一次運行中拋出了任何錯誤悲雳,它就會嘗試重新運行挎峦,直到最大次數(shù)5次,并且每次運行期間都會有一定的延遲合瓢。這對于你在對一臺遠程計算機執(zhí)行網(wǎng)絡調(diào)用的情況十分有用:

  • 案例:

      from time import sleep
      from functools import wraps
      import logging
      logging.basicConfig()
      log = logging.getLogger("retry")
      def retry(f):
          @wraps(f)
          def wrapped_f(*args,**kwargs):
              MAX_ATTEMPTS = 5;
              for attempt in range(1,MAX_ATTEMPTS+1):
                  try:
                      return f(*args,**kwargs);
                  except:
                      log.exception("Attempt %s/%s failed: %s",
                                      attempt,MAX_ATTEMPTS,
                                      (args,kwargs));
                      sleep(10*attempt);
              log.critical("All %s attempts failed : %s",
                              MAX_ATTEMPTS,(args,kwargs));
          return wrapped_f;
      counter = 0;
      @retry
      def save_to_database(arg):
          print("Write to a database or make a network call or etc.");
          print("This will be automatically retried if exception is thrown");
          global counter;
          counter+=1;
          #這將在第一次調(diào)用時拋出異常
          #在第二次運行時將正常工作
          if counter<2:
              raise ValueError(arg);
      if __name__=="__main__":
          save_to_database("Some bad value");
      
      
      C:\Users\Administrator\Desktop>python hello.py powersum(2,3,4)
      Write to a database or make a network call or etc.
      This will be automatically retried if exception is thrown
      ERROR:retry:Attempt 1/5 failed: (('Some bad value',), {})
      Traceback (most recent call last):
        File "hello.py", line 12, in wrapped_f
          return f(*args,**kwargs);
        File "hello.py", line 31, in save_to_database
          raise ValueError(arg);
      ValueError: Some bad value
      Write to a database or make a network call or etc.
      This will be automatically retried if exception is thrown
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坦胶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子晴楔,更是在濱河造成了極大的恐慌顿苇,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件税弃,死亡現(xiàn)場離奇詭異纪岁,居然都是意外死亡,警方通過查閱死者的電腦和手機则果,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門幔翰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人西壮,你說我怎么就攤上這事导匣。” “怎么了茸时?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赋访。 經(jīng)常有香客問我可都,道長缓待,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任渠牲,我火速辦了婚禮旋炒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘签杈。我一直安慰自己瘫镇,他們只是感情好,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布答姥。 她就那樣靜靜地躺著铣除,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹦付。 梳的紋絲不亂的頭發(fā)上尚粘,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機與錄音敲长,去河邊找鬼郎嫁。 笑死,一個胖子當著我的面吹牛祈噪,可吹牛的內(nèi)容都是我干的泽铛。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼辑鲤,長吁一口氣:“原來是場噩夢啊……” “哼盔腔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起遂填,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤铲觉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吓坚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撵幽,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年礁击,在試婚紗的時候發(fā)現(xiàn)自己被綠了盐杂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡哆窿,死狀恐怖链烈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挚躯,我是刑警寧澤强衡,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站码荔,受9級特大地震影響漩勤,放射性物質(zhì)發(fā)生泄漏感挥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一越败、第九天 我趴在偏房一處隱蔽的房頂上張望触幼。 院中可真熱鬧,春花似錦究飞、人聲如沸置谦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽媒峡。三九已至,卻和暖如春袱蜡,著一層夾襖步出監(jiān)牢的瞬間丝蹭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工坪蚁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奔穿,地道東北人。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓敏晤,卻偏偏與公主長得像贱田,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嘴脾,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

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