<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Python 基礎編碼風格

      一、 基礎風格:遵循PEP

      1. 語句編排:
        • 每個語句獨占一行,勿在行尾加分號, 也不要用分號將多條語句放在同一行。
        • 另起一行,即使定義,語句較為簡單:
          • if/for/while 語句中
          • 類定義:class UnfoundError(Exception): pass
        • 建議多行: 
          • 函數和方法的括號中參數或者元素過多時,建議換行多層縮進書寫解決
      2. 空格使用:
        • 不加空格:
          • 各類括號內接語句前后不加空格 
          • 參數中默認值 
        • 加空格: 基本符號后(口號,冒號)前不加空格,后加  使用等號的場景(除參數默認值)  
      3. 命名規范:
        • 小寫配合下劃線場景:
          • 文件名 
          • 類方法和屬性 
        • 駝峰場景:
          • 類名 
        • 大寫與下劃線配合場景:
          • 全局變量名 
        • 下劃線使用開頭(同樣應用于模塊,文件):
          • 為其實例的私有方法(默認:不建議實例外部調用,但不影響獲取其值)
        •  雙下劃線開頭(同樣應用于模塊,文件):
          • 為其私有方法,不允許外部調用,僅可在內部方法之間使用(原因:是防止調用,內部進行了對進行了重載) 
          • 在不重載類屬性時,不建議定義以雙下劃線開頭和結尾的方法 
      4. 判斷比較:
        • 可能的話使用 is/is not 代替 ==(并不是所有的都可以,== 與 is 不等價) 
        • 使用 isinstance() 比較對象的類型,而不是 type() 
        • 使用 startswith() 和 endswith() 代替切片進行序列前綴或后綴的檢查。 
        • if、while、for 時無需專門使用語句判斷對象真值 
      5. 拼接:
        • 字符串,list,tuple等,建議使用join 替代 + ;
        • 路徑拼接,如果跨平臺,建議使用os.path.join or pathlib 
      6. 效率: 使用迭代器和生成器代替列表等數據結構效率更高,使用列表(字典)解析式和生成器表達式比用循環效率更高。
      7. 好的習慣:
        • try: ... except ...., except 后面異常類型確認的話,明確寫上各類型 
        • 文件模塊:功能結構眾多,期望有if __name__ == "__main__" 代碼塊,標準函數執行邏輯過程: 
          if__name__ =="__main__":
              do1()
              do2()
        • 使用推導式,map,filter,reduce等代替for,while循環處理
        • 包模塊擁有自己定義的異常類型
        • 類的方法第一個參數必須是self,而靜態方法第一個參數必須是cls。盡可能的使用 classmethod, staticmethod
       

      二、特別:

          1. 模塊導入格式

      • 位于最頂層,或者頂層注釋與代碼塊中間
      • 導入應該按照從最通用到最不通用的順序分組: 
        • 標準庫導入
        • 第三方庫導入
        • 應用程序指定導入
      • 不建議使用 from flask import * 形式導入,污染全局變量
      • 針對模塊文件中存在大量函數情況下,建議使用__all__ 標注可供外部直接使用的函數

          2.  涉及到IO操作的,注意對象IO對象的關閉,可能的話建議了解是否可用 with

      with open("hello.txt") as fr:
          for line in fr:
              pass

             網絡請求包:requests,urllib等sockets連接相關,因內存管理存在,析構函數可能被無線延長,在大并發高頻次網絡請求時,會產生嚴重的內存泄漏

          3. 建議使用 TODO 為項目代碼添加臨時注釋

      三、 工程:

          1. 函數:Python是一門動態語言,很多時候我們可能不清楚函數參數類型或者返回值類型,可以通過 typing (Python3.5 之后內置方法,目前可能僅有Pycharm支持typing檢查)標注入參,返回值類型,提高可讀性

      • 注釋:
      • 入參(:param):
      • 返回值(:return)

       如下:使用基本類型與 typing類型標注配合,提高項目可讀性,IDE中擁有類型提示,不影響代碼的使用:https://docs.python.org/zh-cn/3.6/library/typing.html

      from typing import List, Mapping, Optional
       
      # 基礎函數定義標注
      def func_merge(a: List[int], b: List[int or str], c: List) -> List[int or str]:
          """
          實現列表合并,產生新的列表
          :param a: 列表a
          :param b: 列表b
          :param c: 列表c
          :return: 生成新的列表
          """
          return a + b + c
       
       
      func_merge(1, 2, 0)  # Pycharm 上會變黃有提示: Expected type 'list', got 'int' instead
      func_merge([1], [2], [0])
       
       
      # 回調函數定義標注
      def do(a: int):
          return str(a)
       
       
      def run_callback(num: int, cb: Callable[[int], str]) -> str:
          return cb(num)
       
       
      print(run_callback(123456, do))
      print(run_callback("a", do))  # 變黃
       
      # 可變參數定義標注
      def foo(arg: Optional[int] = 0) -> None:
          print("arg:", arg)
       
       
      # foo(arg="a")  # 以不正確形式
      # foo(arg=1)
      foo()
       
      # 變量定義標注
      conf: Mapping[str, str]
      conf = {"REDIS": 12323}

         2. http api 接口建議采用restful風格:

      • 接口功能單一
      • 視圖函數,建議以類形式進行處理,django/flask的views,或者restful 的Resource:
        • 方法功能明確:get/post/put/delete 
        • 方法,功能可聚合
        • 結構繼承
      • 請求:資源層次化,利于閱讀與網關權限控制
      • 響應:

      {
          "code": 0,         # 0, 接口預期響應,非0:異常響應
          "data": {},        # 返回具體結果詳情
          "message": "",     # 響應描述
          "desc": "",        # desc 接口功能描述
          "time": ""         # 返回響應時間
      }

       

      posted @ 2021-09-24 14:20  binger0712  閱讀(249)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日本中文字幕亚洲乱码| 五月天中文字幕mv在线| 狠狠色综合播放一区二区| 国产av中文字幕精品| 亚洲中文字幕日产无码成人片| 午夜福利日本一区二区无码| 国产AV永久无码青青草原| 中文无码vr最新无码av专区| 国产成人啪精品视频免费网| 亚洲一区二区av偷偷| 亚洲VA中文字幕无码久久| 国产va免费精品观看| 亚洲精品免费一二三区| 欧洲精品码一区二区三区| 无套后入极品美女少妇| 欧美日本在线一区二区三区| 人妻中文字幕不卡精品| 亚洲精品综合久久国产二区| 久久综合给合久久狠狠狠| 久久久久青草线综合超碰| 五月婷婷深开心五月天| 亚洲精品日韩精品久久| 色狠狠综合天天综合综合| av在线播放无码线| 午夜国产精品福利一二| 私人毛片免费高清影视院| 精品国产一区二区亚洲人| 中国CHINA体内裑精亚洲日本| 涩欲国产一区二区三区四区| 国产av午夜精品福利| 丁香花成人电影| 久久久久久伊人高潮影院| 日韩高清不卡一区二区三区| 精品中文人妻中文字幕| 枣庄市| 四虎影视www在线播放| 中文字幕亚洲人妻系列| 麻豆妓女爽爽一区二区三| 日韩精品一区二区蜜臀av| 国产AV无码专区亚洲AV漫画| 免费无码一区二区三区蜜桃大|