日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

阿龙的学习笔记---python相关杂七杂八的记录

發布時間:2023/12/14 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿龙的学习笔记---python相关杂七杂八的记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • _:臨時變量,_ 代表臨時變量比如for _ in range(10): _ 代表臨時變量,用來循環10次。或者接收不需要的函數返回值。

  • 聲明編碼方式
    • python在文件頭聲明編碼方式:具體格式參考官方文檔:https://www.python.org/dev/peps/pep-0263/
      • # -*- coding: utf-8 -*-
      • # coding=utf-8

  • 字典取值
    • 最簡單的是方括號,dict[‘key’],但是如果沒有這個key,會拋出異常。
    • 字典的成員函數dict.get(key, default):使用get()可以預防ValueError,可以設置默認值,在沒有取到的時候則返回默認值。

  • 字符串格式控制
    • u"“以 Unicode 格式進行編碼; r”“去掉反斜杠的轉移機制; b”“表示bytes類型數據; f”"支持大括號內的python表達式。

  • 控制輸出浮點數的位數
    • print(format(1.23456, ‘.2f’)) 或 print(’%.2f’ % f)

  • 文件IO
    • open(filename, mode)
    • mode: r讀,w寫,a追加;后面:’+'讀寫, 'b’二進制
    • 使用open之后一定要執行close,為了避免忘記,可以使用:with open(‘in.dat’, ‘r’) as f,會自動調用close()

  • with xxx as y:
    • 有些對象可能事先需要設置,事后做清理工作。對于這種場景,Python的with語句提供了一種非常方便的處理方式。
    • 比如打開文件,會自動調用y.close()。
    • 如果是自定義的對象,你可以初始化類中的__enter__() 和 __exit__()函數,這樣會在with進入和退出時自動調用。
    • 重點在于如果在with內部的語句拋出了異常,exit()函數依然能夠在拋出之前順利執行。并且可以讓exit函數接收錯誤的信息比如錯誤類型、錯誤內容,并做相應的處理。

  • 修飾器@staticmethod
    • @staticmethod修飾的函數為靜態方法,只是名義上歸屬類管理,但是不能使用類變量和實例變量,是類的工具包,類似C++的static成員函數。
    • 靜態方法函數里不傳入self 或 cls,可以傳入自定義參數。
    • 靜態方法調用時可以使用實例對象調用,也可以直接靜態調用。myClass.method(),或者myClass().method()都可以。

  • 修飾器@classmethod
    • @classmethod修飾符修飾的函數不需要實例化,不需要 self 參數,但第一個參數需要是表示自身類的 cls 參數,可以來調用自身類的屬性、方法等。
    • 比如項目中會定義一個Tool類,Tool類中定義一些功能的tool函數,調用時直接Tool.getServerInfo()則可以直接調用。

  • 異常處理try…except…else…finally

    try:Nomal execution block except A:Exception A handle except B:Exception B handle except:Other Exception handle else:if no exception, get here finally: print('finally')
    • 完整的如上,try中的代碼塊拋出異常,被except語句捕獲。
    • 可以指定特定的Error類型,如果這一層沒有捕捉到,會傳到下一層except,如果except不帶特定類型,那么則會捕捉所有的異常。
    • 一般捕捉except Exception as e: ,Exception 是常見錯誤的基類。
    • else會在沒有異常拋出時進入這個代碼區域,else必須在有except語句后出現。
    • finally中的代碼,無論是否有錯誤,都會運行。并且**前面如果調用了return,finally中的代碼仍然會執行。**這個比較玄學,下面的例子測試:
    • def exceptTest():try:may_throw_excptioin()return 0except:return 1else:print 'no exception'return 2finally:print 'in finally'# return 3
      • 如果沒有拋出異常,try會執行,else緊接著try后執行,但是由于try中以及return了,所以不會進else。return 0之前會執行finally中的語句,如果有return 3,則會覆蓋返回值, 最終會執行return 3,;如果沒有return 3,則return 0。
      • 如果拋出了異常,except會執行,但是return 1之前會調用finally中的語句,如果finally中執行了return 3,則會覆蓋返回值,則最終會返回3。如果沒有return 3,則會return 1。

  • 可迭代對象
    • 迭代器是可迭代的對象,這意味著可以使用for遍歷所有值。for 循環遍歷的原理就是靠這個迭代器。
    • 原理
      • 列表、元組、字典、集合以及字符串都是可迭代的對象。它們是可迭代的容器,可以從中獲取迭代器(Iterator)。比如:mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
      • for循環其實就是取了對象的迭代器,然后每次對迭代器調用next()。迭代完最后一個數據之后,再次調用next()函數會拋出StopIteration的異常,來告訴我們所有數據都已迭代完成,不用再執行next()函數了。
    • 自定義迭代器
      • 在使用next()函數的時候,調用的是迭代器對象的__next__方法。所以,我們要想構造一個迭代器,就要實現它的__next__方法。
      • 同時,python要求迭代器本身也是可迭代的,所以我們還要為迭代器實現__iter__方法,而__iter__方法要返回一個迭代器,迭代器自身正是一個迭代器,所以迭代器的__iter__方法返回自身即可。
    • 示例: 斐波那契數列class FeiboIterator(object):def __init__(self, n):# 斐波那數列值的個數self.n = n# 記錄當前遍歷的下標self.index = 0# 斐波那數列前面的兩個值self.num1 = 0self.num2 = 1def __next__(self):"""被next()函數調用來獲取下一個數"""if self.index < self.n:num = self.num1self.num1, self.num2 = self.num2, self.num1 + self.num2self.index += 1return numelse:raise StopIterationdef __iter__(self):"""迭代器的__iter__返回自身即可"""return selfif __name__ == '__main__':fb = FeiboIterator(20)for num in fb:print(num, end=' ')```

總結

以上是生活随笔為你收集整理的阿龙的学习笔记---python相关杂七杂八的记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。