python學習筆記(5)--迭代器,產生器,裝飾器,常用模組,序列化

來源:互聯網
上載者:User

標籤:報錯   代碼   作用   重新命名   刪除   無法   load   blog   分割檔案   

產生器

在Python中,一邊迴圈一邊計算的機制,稱為產生器:generator。

如:

1 >>> g = (x * x for xin range(10))2 >>> g
3 <generator object <genexpr> at 0x1022ef630>

此處g就是一個產生器.

迭代器

我們已經知道,可以直接作用於for迴圈的資料類型有以下幾種:

一類是集合資料類型,如list、tuple、dict、set、str等;

一類是generator,包括產生器和帶yield的generator function。

這些可以直接作用於for迴圈的對象統稱為可迭代對象:Iterable。

可以使用isinstance()判斷一個對象是否是Iterable對象:

 1 >>> from collections import Iterable 2 >>> isinstance([], Iterable) 3 True 4 >>> isinstance({}, Iterable) 5 True 6 >>> isinstance(‘abc‘, Iterable) 7 True 8 >>> isinstance((x for x in range(10)), Iterable) 9 True10 >>> isinstance(100, Iterable)11 False

*可以被next()函數調用並不斷返回下一個值的對象稱為迭代器:Iterator。

產生器都是Iterator對象,但list、dict、str雖然是Iterable,卻不是Iterator。

 

凡是可作用於for迴圈的對象都是Iterable類型;

凡是可作用於next()函數的對象都是Iterator類型,它們表示一個惰性計算的序列;

集合資料類型如list、dict、str等是Iterable但不是Iterator,不過可以通過iter()函數獲得一個Iterator對象。

裝飾器

裝飾器的作用完全符合開發中的開放-封閉原則.在不改變原有功能代碼,不改變原有調用方式,實現擴充新的功能.

模組匯入的兩種方法

import auth

import auth as os 取個別名為os

from auth import login

__file__ 相對路徑的檔案名稱
os.basename(os.path.abspath(__file__)) 把相對路徑轉換為絕對路徑

py2
目錄裡面沒有__init__,那就只是一個目錄.目錄是不可以被匯入的.
有__Init__.那這個目錄就變成了 "包" = package
只不過在py3裡面.目錄不用加__init__也可以被匯入

常用模組 OS模組  

提供對作業系統進行調用的介面

 1 os.getcwd() 擷取當前工作目錄,即當前python指令碼工作的目錄路徑 2 os.chdir("dirname")  改變當前指令碼工作目錄;相當於shell下cd 3 os.curdir  返回目前的目錄: (‘.‘) 4 os.pardir  擷取目前的目錄的父目錄字元串名:(‘..‘) 5 os.makedirs(‘dirname1/dirname2‘)    可產生多層遞迴目錄 6 os.removedirs(‘dirname1‘)    若目錄為空白,則刪除,並遞迴到上一級目錄,如若也為空白,則刪除,依此類推 7 os.mkdir(‘dirname‘)    產生單級目錄;相當於shell中mkdir dirname 8 os.rmdir(‘dirname‘)    刪除單級空目錄,若目錄不為空白則無法刪除,報錯;相當於shell中rmdir dirname 9 os.listdir(‘dirname‘)    列出指定目錄下的所有檔案和子目錄,包括隱藏檔案,並以列表方式列印10 os.remove()  刪除一個檔案11 os.rename("oldname","newname")  重新命名檔案/目錄12 os.stat(‘path/filename‘)  擷取檔案/目錄資訊13 os.sep    輸出作業系統特定的路徑分隔字元,win下為"\\",Linux下為"/"14 os.linesep    輸出當前平台使用的行終止符,win下為"\t\n",Linux下為"\n"15 os.pathsep    輸出用於分割檔案路徑的字串16 os.name    輸出字串指示當前使用平台。win->‘nt‘; Linux->‘posix‘17 os.system("bash command")  運行shell命令,直接顯示18 os.environ  擷取系統內容變數19 os.path.abspath(path)  返回path正常化的絕對路徑20 os.path.split(path)  將path分割成目錄和檔案名稱二元組返回21 os.path.dirname(path)  返回path的目錄。其實就是os.path.split(path)的第一個元素22 os.path.basename(path)  返回path最後的檔案名稱。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素23 os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False24 os.path.isabs(path)  如果path是絕對路徑,返回True25 os.path.isfile(path)  如果path是一個存在的檔案,返回True。否則返回False26 os.path.isdir(path)  如果path是一個存在的目錄,則返回True。否則返回False27 os.path.join(path1[, path2[, ...]])  將多個路徑組合後返回,第一個絕對路徑之前的參數將被忽略28 os.path.getatime(path)  返回path所指向的檔案或者目錄的最後存取時間29 os.path.getmtime(path)  返回path所指向的檔案或者目錄的最後修改時間
sys模組
1 sys.argv           命令列參數List,第一個元素是程式本身路徑2 sys.exit(n)        退出程式,正常退出時exit(0)3 sys.version        擷取Python解釋程式的版本資訊4 sys.maxint         最大的Int值5 sys.path           返回模組的搜尋路徑,初始化時使用PYTHONPATH環境變數的值6 sys.platform       返回作業系統平台名稱
json & pickle 模組

用於序列化的兩個模組

  • json,用於字串 和 python資料類型間進行轉換
  • pickle,用於python特有的類型 和 python的資料類型間進行轉換

Json模組提供了四個功能:dumps、dump、loads、load

pickle模組提供了四個功能:dumps、dump、loads、load

 

python學習筆記(5)--迭代器,產生器,裝飾器,常用模組,序列化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.