os、sys模塊collecttions、time、functools、random、迭代器的補充

一.collections,time時間,functools,random模塊。html

二.迭代器python

三函數的嵌套。app

三函數的嵌套。dom

一.collections,time時間,functools,random模塊.

 (一)collections模塊函數

1.Counter:一個計數器,主要用來計數.spa

low: 
s = "alex like pig" 
dic = {} 
for c in s:
    dic[c] = dic.get(c, 0) + 1 
print(dic) 
nb: 
s = "alex like pig" 
print(Counter(s)) # 獲取到的結果能夠像字典同樣進行使用  [key]

 2.deque雙向隊列(具體內容詳見day22.模塊)操作系統

from collections import deque  #建立雙向隊列,該模塊建立的隊列,在取值時,若是取空了,會報錯.
d = deque() # 建立雙向隊列
d.append("寶寶") #  在右側添加
d.append("哈哈")
d.appendleft("娃哈哈") # 在左邊添加
d.appendleft("爽歪歪")print(d.pop()) # 從右邊拿數據
print(d.pop()) # 從右邊拿數據
print(d.popleft()) # 從左邊拿數據
print(d.popleft()) # 從左邊拿數據
import queue  #建立隊列,該模塊建立的隊列取值是若是取沒了,不會報錯.
q = queue.Queue()
q.put("李嘉誠")
q.put("張師兄")
print(q) 
#打印結果:<queue.Queue object at 0x000001F77C1482E8>
print(q.get()) print(q.get())

4.orderdict和defaultdictcode

5.namedtuple  命名元組orm

from collections import namedtuple
nt = namedtuple("point",["x","y"]) #本身定義一個元組,其實就是建立一個小型的類
p = nt(1,2)
print(p)
print(p.x)
print(p.y)

(二)time時間模塊htm

時間有三種:

時間戳(time.time()): 時間戳使用的是從1970年年01月01日 00點00分00秒到如今一共通過了多少秒... 使用float來表示.

格式化時間(time.strftime()). 這個時間能夠根據咱們的須要對時間進行任意的格式化. 

結構化時間(struct_time). 這個時間主要能夠把時間進行分類劃分. 好比. 1970 年01月01日 00點00分00秒  這個時間能夠被細分爲年, 月, 日.....一大堆東西. 

,展示給客戶須要轉換

格式化時間:

import time
s = time.strftime("%Y-%m-%d %H:%M:%S")    # 此時間爲如今系統的格式化時間.
print(s)
輸出結果爲:
2018-12-27 07:30:19

結構化時間:

print(time.localtime()) 
結果: 
time.struct_time(tm_year=2017, tm_mon=05, tm_mday=8, tm_hour=10, tm_min=24, tm_sec=42, tm_wday=0, tm_yday=126, tm_isdst=0)

 

格式化時間轉換成時間戳時間
user_input = 2020-10-01 04:18:12  #格式化時間
# 格式化時間轉化成結構化時間  time.strptime(字符串時間,格式)
struct_time = time.strptime(user_input, "%Y-%m-%d %H:%M:%S")
num = time.mktime(struct_time)  # 轉化成時間戳
print(num) #輸出結果是一個數字
把時間戳時間,轉換成格式化時間
a = 188888
t = time.localtime(a) # 結構化的本地東八區的時間
# t = time.gmtime(a) # 格林尼治時間
s = time.strftime("%Y-%m-%d %H:%M:%S", t)# 把一個結構化時間轉化成格式化時間
print(s)

 (三)functools模塊

①wraps()  #給裝飾器中的inner更名字

from functools import wraps # 能夠改變一個函數的名字, 註釋...
def wrapper(fn):
    @wraps(fn)  # 把inner的名字改變成原來的func
    def inner(*args, **kwargs):
        print("")
        ret = fn(*args, **kwargs)
        print("")
        return ret
    return inner
@wrapper # func = wrapper(func)
def func():
    print('哈哈哈')
print(func.__name__) # func

 ②reduce #跟map相對的

reduce(function, iterable[, initializer]) 函數會對參數序列中元素進行累積。

函數將一個數據集合(鏈表,元組等)中的全部數據進行下列操做:用傳給 reduce 中的函數 function(有兩個參數)先對集合中的第 一、2 個元素進行操做,獲得的結果再與第三個數據用 function 函數運算,最後獲得一個結果。

 

#map() 映射
print(list(map(lambda x:x**2,[i for i in range(10)])))
輸出結果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(reduce(lambda x,y:x*y,[i for i in range(1,10)]))
輸出結果:362880

3)partial()  偏函數(固定函數中某些參數的值)

from functools import partial
def chi(zhushi, fushi):
    print(zhushi, fushi)
chi2 = partial(chi, fushi="辣雞爪")
chi2("大米飯")
chi2("小米飯")
打印結果爲:
大米飯 辣雞爪
小米飯 辣雞爪

(四)randome模塊 (關於隨機的模塊)

import random
print(random.random)
print(random.uniform(3,10)) #3-10的小數
print(random.randint(3,10)) #3-10的整數
print(random.randrange(1,10,2)) #1-10的奇數
print(random.choice([1,"周杰倫",["感倫,'胡辣湯"]])) #列表元素任意2個組合
print(random.sample(([1, '23', [4, 5]], 2)) ) # 1或者23或者[4,5])
lst = [1, 2, 3, 4, 5, 6, 7, 8]
random.shuffle(lst) #隨機打亂順序
print(lst)

 另外補充一個: round()函數,方法返回浮點數x的四捨五入值(不許確)。相關鏈接解釋:    http://www.runoob.com/w3cnote/python-round-func-note.html

若是距離兩邊同樣遠,會保留到偶數的一邊。好比round(0.5)和round(-0.5)都會保留到0,而round(1.5)會保留到2.四捨五入前的數是奇數,是四舍五如;是偶數,則是五設六入
在用round()函數進行四捨五入時,若是你對結果有十足把握,而且這就是你想要的結果,那就放心大膽地使用。否則就老老實實寫個函數來實現吧,這不是什麼難事

(五)os模塊(操做系統相關的模塊)import os

os.makedirs('dirname1/dirname2') #可生成多層遞歸目錄
os.removedirs('dirname1')#刪除指定路徑的空目錄,一直刪除到不爲空的目錄
os.mkdir('dirname1') #生成單級目錄
os.rmdir('dirname1') #刪除單級空目錄,若是目錄不爲空則報錯.
os.listdir('dirname1') #列出指定目錄下的全部文件和子目錄,包括隱藏文件,列表形式返回
os.remove('dirname1') #刪除一個文件,能夠給絕對路徑
os.rename('dirname1','dirname2')#重新命名
os.stat('path/filename') #獲取文件/目錄的信息
os.urandom(n)    #隨機生成n個字節字符串(函數返回的隨機字節是根據不一樣的操做系統特定的隨機函數資源。即,這個函數是調用OS內部自帶的隨機函數的。有特異性)
os.getcwd() #獲取當前工做目錄,即當前python腳本的工做目錄路徑
os.chdir("dirname") #改變當前腳本的工做目錄.

os.path.abspath(path)  #返回path規範化的絕對路徑
os.path.split(path) #講path分割成目錄和文件名二元組返回
os.path.dirname(path)#返回path 的目錄,。其實就是os.path.split(path)的第一個元素
os.path.basename(path) 返回path最後的⽂文件名。
                      若是path以/或\結尾,那麼就會返回空值。 即os.path.split(path)的第二個元素
os.path.exists(path)#判斷路徑是否存在,若是path存在,返回True若是path不存在返回False
os.path.isabs(path) #判斷是否爲絕對路徑,返回值True/False
os.path.isfile(path) #判斷是否存在該文件,返回值True/False
os.path.isdir(path) #判斷是否存該目錄,True/False
os.path.join(path1,[path2,[...]])#講多個路徑組合後返回,第一個絕對路徑以前的參數將被忽略
os.path.getsize(path) #返回path的大小

 (六)sys模塊(解釋器相關的模塊)

import sys
sys.version() #獲取py解釋器程序的版本信息
sys.path() #返回值是該模塊的搜索路徑,初始化時使用py環境變量的值
相關文章
相關標籤/搜索