python學(xué)習(xí)筆記

      網(wǎng)友投稿 765 2025-03-31

      高階函數(shù):

      把函數(shù)作為參數(shù)傳入,這樣的函數(shù)稱為高階函數(shù),函數(shù)式編程就是指這種高度抽象的編程范式。

      r = map(function,Iterator) ?function:方法,Iterator:列表、元組等 ?map():把function作用于Iterator中的每個(gè)元素,并返回一個(gè)新的Iterator

      list(r) r轉(zhuǎn)化為list

      vl = reduce(function,Iterator) ,有點(diǎn)像遞歸,返回最終的操作結(jié)果

      >>> def add(x, y):

      ... ? ? return str(x) + str(y) x、y 第一次進(jìn)來(lái)是1,2 后面x是前面一次計(jì)算的值,y是list中的下一個(gè)值,直到走完list中的每個(gè)值,方法執(zhí)行完畢

      ...

      >>> reduce(add, [1, 3, 5, 7, 9])

      "13579"

      filter()的作用是從一個(gè)序列中篩出符合條件的元素。由于filter()使用了惰性計(jì)算,所以只有在取filter()結(jié)果的時(shí)候,才會(huì)真正篩選并每次返回下一個(gè)篩出的元素。

      list(filter(function,Iterator)) ?function: 過(guò)濾器,需返回True/False決定元素的去留 Iterator:列表、元組等 ?返回符合要求的元素

      sorted() 排序

      sorted(list,key=function, reverse=True) list:數(shù)組 key不能變,function為排序規(guī)則,reverse=True,反序/False,正序

      一個(gè)函數(shù)可以返回一個(gè)具體值,也可以返回一個(gè)函數(shù)。

      返回一個(gè)函數(shù)時(shí),牢記該函數(shù)并未執(zhí)行,返回函數(shù)中不要引用任何可能會(huì)變化的變量。

      返回的函數(shù)應(yīng)定義在改函數(shù)內(nèi)部

      python學(xué)習(xí)筆記

      def f1():

      def f2():

      return va

      return f2

      該函數(shù)不會(huì)立即返回va, 會(huì)返回f2整個(gè)方法,等需要用f2返回的va時(shí),才會(huì)具體去執(zhí)行。-----稱之為"閉包"

      每次調(diào)用返回的都是一個(gè)新的方法,即使傳入的參數(shù)是一樣的

      匿名函數(shù):避免命名沖突

      lambda表達(dá)式

      lambda x: x * x ? 冒號(hào)前面為參數(shù),后面為計(jì)算表達(dá)式 ?返回值為表達(dá)式計(jì)算的結(jié)果 (只能有一個(gè)表達(dá)式)

      裝飾器:代碼運(yùn)行期間動(dòng)態(tài)增加功能的方式,稱之為“裝飾器”(Decorator)???????????

      偏函數(shù):把一個(gè)函數(shù)的某些參數(shù)給固定住(也就是設(shè)置默認(rèn)值),返回一個(gè)新的函數(shù),調(diào)用這個(gè)新函數(shù)會(huì)更簡(jiǎn)單。

      >>> import functools

      >>> int2 = functools.partial(int, base=2)

      IO編程:從內(nèi)存中輸出到硬盤、網(wǎng)絡(luò)(Output)或者從硬盤網(wǎng)絡(luò)輸入到內(nèi)存(Input)

      同步IO:

      異步IO:

      CPU與硬件速度不匹配造成

      文件讀寫:

      f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')

      f.read()

      f.close()

      open(文件路徑及文件名和后綴,讀/寫("r:讀/w:寫文本/wb:寫二進(jìn)制"),encoding取讀/寫入文件用的編碼--寫入時(shí)會(huì)自動(dòng)轉(zhuǎn)換,errors='ignore'遇到無(wú)法識(shí)別的忽略)

      文件不存在時(shí)會(huì)報(bào)IOError異常

      操作完成后,必須關(guān)閉文件流

      with open('/path/to/file', 'r') as f:

      print(f.read())

      with代替try fianlly,并且不用再次調(diào)用close()

      read(size):size一次取讀的文件大小,不設(shè)默認(rèn)全部取讀

      readlines():一次取讀一行

      f.write(寫入內(nèi)容)

      os,os.path:模塊封裝了操作系統(tǒng)的目錄和文件操作,要注意這些函數(shù)有的在os模塊中,有的在os.path模塊中。

      os.name --獲取操作系統(tǒng)類型

      "posix" :Linux、Unix或Mac OS X

      "nt" :Windows

      os.uname() ?--獲取操作系統(tǒng)類型詳情(Windows下無(wú)此方法)

      os.environ --獲取系統(tǒng)中所有的環(huán)境變量

      os.environ.get('key') --獲取系統(tǒng)中某個(gè)環(huán)境變量的值

      os.path.abspath('.') --查看當(dāng)前目錄的絕對(duì)路徑

      os.path.join('絕對(duì)路徑', '新文件夾名稱') ?獲取這個(gè)新文件夾的絕對(duì)路徑 --主要處理不同操作系統(tǒng)的路徑

      os.mkdir("絕對(duì)路徑") 創(chuàng)建文件夾

      os.rmdir("絕對(duì)路徑") 刪除一個(gè)文件夾

      os.path.split("文件絕對(duì)路徑")--("文件的絕對(duì)路徑,到文件夾","文件名稱跟后綴") 一個(gè)元祖

      os.path.splitext("文件絕對(duì)路徑") --獲取文件類型 ("文件絕對(duì)路徑,到文件名","文件后綴")

      序列化(pickling):

      序列化unpickling:

      object寫入文件時(shí),需序列化

      pickle.dumps(d):序列化一個(gè)對(duì)象(序列化為bytes)

      pickle.dump(obj,文件IO) 直接把對(duì)象序列化后寫入一個(gè)file-like Object

      pickle.loads(文件IO) :反序列化文件

      (dumps(d)返回值為標(biāo)準(zhǔn)的json字符串)

      import json

      json.dumps(d) ?把對(duì)象序列化為json

      json.dumps(s, default=lambda obj: obj.__dict__)) 直接把一個(gè)class序列化為json(class不能直接序列化為json,需用lambda,調(diào)用obj.__dict__轉(zhuǎn)為dict)

      錯(cuò)誤處理:

      try:

      except:

      finally:

      Python錯(cuò)誤也是class ?都繼承自BaseException

      import logging

      記錄錯(cuò)誤信息

      調(diào)試:

      1、print()

      2、斷言(assert)

      3、logging ?------王道

      4、pdb

      5、pdb.set_trace()

      6、IDE

      import logging

      LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"

      logging.basicConfig(filename='my.log', level=logging.DEBUG, format=LOG_FORMAT)

      logging.debug("This is a debug log.")

      logging.info("This is a info log.")

      logging.warning("This is a warning log.")

      logging.error("This is a error log.")

      logging.critical("This is a critical log.")

      basicConfig()可接收參數(shù)

      filename 指定日志輸出目標(biāo)文件的文件名,指定該設(shè)置項(xiàng)后日志信心就不會(huì)被輸出到控制臺(tái)了

      filemode 指定日志文件的打開模式,默認(rèn)為'a'。需要注意的是,該選項(xiàng)要在filename指定時(shí)才有效

      format 指定日志格式字符串,即指定日志輸出時(shí)所包含的字段信息以及它們的順序。logging模塊定義的格式字段下面會(huì)列出。

      datefmt 指定日期/時(shí)間格式。需要注意的是,該選項(xiàng)要在format中包含時(shí)間字段%(asctime)s時(shí)才有效

      level 指定日志器的日志級(jí)別

      stream 指定日志輸出目標(biāo)stream,如sys.stdout、sys.stderr以及網(wǎng)絡(luò)stream。需要說(shuō)明的是,stream和filename不能同時(shí)提供,否則會(huì)引發(fā)ValueError異常

      style Python 3.2中新添加的配置項(xiàng)。指定format格式字符串的風(fēng)格,可取值為'%'、'{'和'$',默認(rèn)為'%'

      handlers Python 3.3中新添加的配置項(xiàng)。該選項(xiàng)如果被指定,它應(yīng)該是一個(gè)創(chuàng)建了多個(gè)Handler的可迭代對(duì)象,這些handler將會(huì)被添加到root logger。需要說(shuō)明的是:filename、stream和handlers這三個(gè)配置項(xiàng)只能有一個(gè)存在,不能同時(shí)出現(xiàn)2個(gè)或3個(gè),否則會(huì)引發(fā)ValueError異常。

      format可定義參數(shù)

      asctime %(asctime)s 日志事件發(fā)生的時(shí)間--人類可讀時(shí)間,如:2003-07-08 16:49:45,896

      created %(created)f 日志事件發(fā)生的時(shí)間--時(shí)間戳,就是當(dāng)時(shí)調(diào)用time.time()函數(shù)返回的值

      relativeCreated %(relativeCreated)d 日志事件發(fā)生的時(shí)間相對(duì)于logging模塊加載時(shí)間的相對(duì)毫秒數(shù)(目前還不知道干嘛用的)

      msecs %(msecs)d 日志事件發(fā)生事件的毫秒部分

      levelname %(levelname)s 該日志記錄的文字形式的日志級(jí)別('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')

      levelno %(levelno)s 該日志記錄的數(shù)字形式的日志級(jí)別(10, 20, 30, 40, 50)

      name %(name)s 所使用的日志器名稱,默認(rèn)是'root',因?yàn)槟J(rèn)使用的是 rootLogger

      message %(message)s 日志記錄的文本內(nèi)容,通過(guò) msg % args計(jì)算得到的

      pathname %(pathname)s 調(diào)用日志記錄函數(shù)的源碼文件的全路徑

      filename %(filename)s pathname的文件名部分,包含文件后綴

      module %(module)s filename的名稱部分,不包含后綴

      lineno %(lineno)d 調(diào)用日志記錄函數(shù)的源代碼所在的行號(hào)

      funcName %(funcName)s 調(diào)用日志記錄函數(shù)的函數(shù)名

      process %(process)d 進(jìn)程ID

      processName %(processName)s 進(jìn)程名稱,Python 3.1新增

      thread %(thread)d 線程ID

      threadName %(thread)s 線程名稱

      Logging python

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:怎么設(shè)置標(biāo)點(diǎn)符號(hào)不出現(xiàn)在行首?(標(biāo)點(diǎn)符號(hào)可以出現(xiàn)在行首嗎)
      下一篇:智能客服服務(wù)系統(tǒng)(智能客服服務(wù)系統(tǒng)有哪些)
      相關(guān)文章
      亚洲av福利无码无一区二区 | 亚洲Av永久无码精品黑人| 亚洲avav天堂av在线不卡| 亚洲乱码日产一区三区| 奇米影视亚洲春色| 亚洲国产成人久久一区久久 | 久久夜色精品国产亚洲AV动态图| 亚洲码国产精品高潮在线| 亚洲午夜国产精品无码| 亚洲乱码无码永久不卡在线| 亚洲日韩aⅴ在线视频| 国产亚洲免费的视频看| 国产亚洲美女精品久久久久狼| 亚洲区小说区图片区QVOD| 国产亚洲人成网站在线观看不卡| 久久91亚洲人成电影网站| 国产亚洲精品va在线| 久久亚洲一区二区| 亚洲综合日韩中文字幕v在线| 亚洲午夜免费视频| 亚洲精品无码久久久久久久 | 午夜亚洲福利在线老司机| 亚洲成A∨人片天堂网无码| 亚洲精品色婷婷在线影院| 在线亚洲精品自拍| 亚洲午夜久久久久妓女影院| 日韩亚洲一区二区三区| 亚洲大片在线观看| 亚洲春色在线观看| 国产成人精品亚洲2020| 亚洲人成无码网站在线观看| 亚洲JLZZJLZZ少妇| 怡红院亚洲红怡院在线观看| 亚洲日本一区二区一本一道 | 国产亚洲精品高清在线| 亚洲精品乱码久久久久66| 亚洲av中文无码乱人伦在线r▽ | jlzzjlzz亚洲jzjzjz| 亚洲精品国产综合久久久久紧| 色窝窝亚洲av网| 亚洲国产精品国产自在在线|