day22 模塊-collections,time,random,pickle,shelve等

一、引入模塊的方式:

1. 認識模塊
模塊可以認為是一個py文件. 模塊實際上是我們的py文件運行后的名稱空間
導入模塊:
1. 判斷sys.modules中是否已經導入過該模塊
2. 開辟一個內存
3. 在這個內存中執行該py文件
4. 給這個內存起個名字, 一般用的是py文件的名字。返回給導入方
如果你的py文件是啟動文件, 名字是__main__

程序的入口一般是:
if __name__ == "__main__":
  pass

1. import 模塊

import 模塊名
模塊名.屬性/方法/類

每個模塊都有自己的獨立的名稱空間,每個都有一個global, 互相并不影響
模塊.屬性 = 值. # 不要隨意更改模塊的值

?

2. from xxx import 模塊

from 模塊 import 函數/變量
當作自己的變量或者函數來使用

from xxx import * 導入所有
導入的內容都可以起別名 as

?

二、collections模塊

collections模塊主要封裝了一些關于集合類的相關操作

  1. Counter——counter是一個計數器. 主要?用來計數
  2. deque 雙向隊列

需了解棧和隊列

棧:? FILO. 先進后出? -> 砌墻的磚頭, 老師傅做饅頭

隊列: FIFO. 先進先出? -> 買火?車票排隊, 所有排隊的場景

隊列: python提供了queue模塊. 使用起來非常?便

注意. 如果隊列里沒有元素了. 再也就拿不出來元素了. 此時程序會阻塞.

雙向隊列 collections中的,可以從左側添加,也可從右側添加,刪除同理

  3.namedtuple 命名元組

給元組內的元素進行命名

from collections import namedtuple

# ??定義了一個元組, 如果靈性夠好, 這其實就是創建了了?個類

nt = namedtuple("point", ["x", "y"])

p = nt(1, 2)

print(p)

print(p.x)

print(p.y)

?

  4.orderdict和defaultdict

orderdict 顧名思義. 字典的key默認是無序的. 而OrderedDict是有序的

defaultdict: 可以給字典設置默認值. 當key不存在時. 直接獲取默認值:

from collections import defaultdict

dd = defaultdict(list)? # 默認值list

print(dd['娃哈哈']) # [] 當key不存在的時候. 會自動執?構造方法中傳遞的內容.

?

三、time模塊 ?時間模塊

?1.? 時間戳(timestamp). 時間戳使?的是從1970年01月01日 00點00分00秒到現在一共經過了了多少秒... 使?float來表示

2.? 格式化時間(strftime). 這個時間可以根據我們的需要對時間進?任意的格式化.

?

1. 獲取系統時間 time.time() 時間戳

2. 格式化時間 strftime() 時間格式: %Y-%m-%d %H:%M:%S?????? %Y-%m-%d

3. 結構化時間 time.gmtime() time.localtime()

?? strptime() 把格式化時間轉化成結構化時間

?? mktime()? 把結構化時間轉化成時間戳

?

s = time.strftime("%Y-%m-%d %H:%M:%S")? 格式化

print(s)

?

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)

?

所有的轉化都要通過結構化時間來轉化.

t = time.localtime(1888888888)? # 結構化時間

s = time.strftime("%Y-%m-%d %H:%M:%S", t) # 格式化這個時間

print(s)

?

s = "2020-10-01 12:18:12"

t = time.strptime(s, "%Y-%m-%d %H:%M:%S")?? # 轉化成結構時間

print(time.mktime(t))?? # 轉換成時間戳

?

四、random模塊 -隨機

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

?

五、os、sys

os和sys

?

os.sep 文件路徑分隔符

sys.path? python查找模塊的路徑

?

六、序列化

?

??? 1. pickle? 把一個對象轉化成bytes寫入到文件

??????? pickle.dumps() 把對象轉換成bytes

??????? pickle.loads() 把bytes轉化成對象

?

??????? pickle.dump() 把對象轉換成bytes. 寫入到文件

??????? pickle.load() 把文件中的bytes讀取. 轉化成對象

?????? ? 那真的要寫入或者讀取多個內容怎么辦? 很簡單. 裝list里. 然后讀取和寫入都?list

創建一個Car類 擁有名字,年齡屬性

lst = [Cat("jerry", 19), Cat("tommy", 20), Cat("alpha", 21)]

f = open("cat", mode="wb")

pickle.dump(lst, f)

?

f = open("cat", mode="rb")

ll = pickle.load(f)

for el in ll:???

el.catchMouse()

記住?點, pickle序列化的內容是二進制的內容(bytes) 不是給?看的,給機器看的。

??? 2. shelve 小型數據庫, redis, mongodb, dict

??????? 當成字典來用

??????? writeback=True 用來執行修改操作,刪除或修改都用它 不用不改變

?

??? 3. json 以前用xml? 先在用json

??????? json.dumps() 把字典轉換成json字符串

??????? json.loads() 把json字符串轉化成字典

?

??????? json.dump() 把字典轉換成json字符串. 寫入到文件

??????? json.load() 把文件中的json字符串讀取. 轉化成字典

?

??????? default = func()? 把對象轉化成字典. 需要自己寫函數轉換過程

??????? object_hook = func() 把字典轉化成對象. 需要自己寫函數轉換過程

??????? ensure_ascii = False? 可以處理中文

?

? 注意. 我們可以向同一個文件中寫?多個json串. 但是讀不?。

在讀取的時候是?法正常讀取的. 那如何解決呢? 兩套方案. 方案一. 把所有的內容準備好統一 進?行寫入和讀取. 但這樣處理, 如果數據量小還好. 數據量大的話, 就不夠友好了. 方案二. 不用 dump. 改用dumps和loads. 對每??分別進?處理.

 1 import json 
 2 lst = [{"a": 1}, {"b": 2}, {"c": 3}] 
 3 # 寫?
 4 f = open("test.json", mode="w", encoding="utf-8")
 5 for el in lst:    
 6     s = json.dumps(el, ensure_ascii=True) + "\n"    
 7     f.write(s)
 8 f.close() 
 9 
10 # 讀取 
11 f = open("test.json", mode="r", encoding="utf-8") 
12 for line in f:   
13     dic = json.loads(line.strip())    
14 print(dic)
15 f.close()

?

?

  4.configparser 處理windows配置文件的? dict

  適用于配置文件的格式與windows ini文件類似

  可以包含一個或多個節(section)每個節 可以有多個參數(鍵=值).

轉載于:https://www.cnblogs.com/honghong7725/p/9974914.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278894.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278894.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278894.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Redis實現分布式鎖,避免重復執行定時任務

Spring提供了定時任務的功能,但是在多個實例的集群中,會出現定時任務重復執行多次的情況。 使用Qutaz框架自帶的分布式定時任務可以很好的解決這個問題,但是講道理功能有些過于強大,對于需求不高,乃至可以一定程度上允…

Input Director使用一個鍵盤和鼠標即可控制多臺Windows計算機

The problem is having two or more PC’s and having to go back and forth between workstation. Input Director solves the problem by allowing you to control multiple Windows systems with only one keyboard and mouse on the Master PC. 問題是擁有兩臺或更多臺PC…

viper4android 生效,另一種讓V4a音效在Poweramp上生效的方法

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓本人按照網上的方法進Poweramp設置—音頻—高級選項—直接音量控制—不打勾后 V4a音效沒有生效 我又把V4a音效兼容模式里的正常模式切換成為兼容模式 結果還是不行......后來我郁悶了三天三夜有一天我去了v4a官網論壇看到了admin帖…

[學習筆記]狀壓dp

狀壓 \(dp\) 1、[SDOI2009]Bill的挑戰 \(f[i][j]\) 表示匹配到字符串的第 \(i\) 位狀態為 \(j\) 的方案數 那么方程就很明顯了&#xff0c;每次枚舉第 \(i\) 位的字母 \(alpha\) 然后 \(O(n)\) 判斷就好了 時間復雜度 \(O(26Tlen2^nn)\) \(Code\ Below:\) #include <bits/st…

excel導入csv文件_如何將包含以0開頭的列的CSV文件導入Excel

excel導入csv文件Microsoft Excel will automatically convert data columns into the format that it thinks is best when opening comma-separated data files. For those of us that don’t want our data changed, we can change that behavior. Microsoft Excel將在打開…

MySQL之進化篇

MySQL之實用篇 MySQL之牛刀小試 子查詢是指出現在其他SQL語句內的SELECT子句. 例如: SELECT * FROM t1 WHERE column1 (SELECT column2 FROM t2) 其中 SELECT * FRIN t1 稱為outerQuery SELECT column2 FROM t2 稱為subQuery 注意:子查詢指嵌套在查詢內部,且必須始終出現在圓括…

android 9.0新ui,SystemUI分析(Android9.0)

8種機械鍵盤軸體對比本人程序員&#xff0c;要買一個寫代碼的鍵盤&#xff0c;請問紅軸和茶軸怎么選&#xff1f;一、SystemUI組成SystemUI是Android的系統界面&#xff0c;包括狀態欄statusbar、鎖屏keyboard、任務列表recents等等&#xff0c;都繼承于SystemUI這個類&#xf…

WMI技術介紹和應用——WMI概述

https://blog.csdn.net/breaksoftware/article/details/8424317轉載于:https://www.cnblogs.com/diyunpeng/p/9982885.html

解決App啟動時白屏的問題

第一次 03-25 11:02:34.431 6908-6908/com.newenergyjinfu.jytz D/App: before_onCreate: 239 03-25 11:02:34.513 6908-6908/com.newenergyjinfu.jytz D/App: after_initOkGo( initPicasso): 316 03-25 11:02:34.570 6908-6908/com.newenergyjinfu.jytz D/App: after_ J…

chromebook刷機_如何為不支持Chrome操作系統的網站欺騙Chromebook用戶代理

chromebook刷機Not all browsers handle websites the same, and if they don’t support your operating system or browser, you could be denied access. Luckily, you can spoof the user agent on Chrome OS to make it look like you use a completely different system.…

什么時候可以升級HarmonyOS,華為鴻蒙OS即將迎來升級 手機版本或仍需時間

原標題&#xff1a;華為鴻蒙OS即將迎來升級 手機版本或仍需時間在2019年的華為開發者大會上&#xff0c;華為消費者業務CEO余承東正式對外發布了HarmonyOS。時隔一年后&#xff0c;華為開發者大會2020即將拉開帷幕。此次大會&#xff0c;HarmonyOS無疑仍會是重頭戲之一&#xf…

Shell_mysql命令以及將數據導入Mysql數據庫

連接MYSQL數據庫 mysql -h${db_ip} -u${db_user} -p${db_pawd} -P${db_port} -D${db_name} -s -e "${sql}" db_ip&#xff1a;主機地址 db_user &#xff1a;數據庫用戶名 db_pwd&#xff1a;密碼 db_port&#xff1a;端口號 db_name&#xff1a;數據庫名稱 sql&…

cocos android-1,cocos2dx在windows下開發,編譯到android上(1)

轉自&#xff1a;http://www.2cto.com/kf/201205/130697.html下面我給大家介紹下&#xff0c;用vs2010開發cocos2dx&#xff0c;然后如何使其編譯到android上。步驟如下&#xff1a;1、必要條件&#xff0c;你的eclipse能把代碼編譯到安卓手機或虛擬機上&#xff0c;如果這一步…

中藥ppi網絡圖太雜亂_太雜亂了嗎? 這是您的iPhone,iPad,Android或臺式機的15張簡約壁紙...

中藥ppi網絡圖太雜亂Busy wallpaper images don’t work very well on your iPhone, iPad, or any device where you need to have lots of icons on the screen. Here’s a set of minimalistic wallpaper images that won’t clutter up your desktop. 繁忙的墻紙圖像在iPhon…

算法61---兩個字符串的最小ASCII刪除和【動態規劃】

一、題目&#xff1a; 給定兩個字符串s1, s2&#xff0c;找到使兩個字符串相等所需刪除字符的ASCII值的最小和。 示例 1: 輸入: s1 "sea", s2 "eat" 輸出: 231 解釋: 在 "sea" 中刪除 "s" 并將 "s" 的值(115)加入總和。 在…

android設置時間widget,【Android】時間與日期Widget(DatePicker 與 TimePicker)

public class Activity01 extends Activity{TextViewm_TextView;//聲明dataPickerDatePickerm_DatePicker;//聲明TimePickerTimePickerm_TimePicker;Button m_dpButton;Button m_tpButton;//java中的Calendar類Calendar c;/** Called when the activity is first created. */Ov…

初學者java學習計劃_初學者:計劃在Windows 7 Media Center中錄制直播電視的時間

初學者java學習計劃If you’re a new user to Windows 7 Media Center you know it can act as a DVR and pause or record Live TV. You can set up a schedule for it to record your favorite TV programs as well. 如果您是Windows 7 Media Center的新用戶&#xff0c;則知…

雙數據源配置

從此抄錄&#xff1a;https://blog.csdn.net/ll535299/article/details/78203634 1、先配置兩個數據源&#xff0c;附上主要代碼&#xff0c;給自己回憶&#xff0c;詳解見開頭鏈接 <!-- 配置數據源 --> <bean id"szDS" class"com.alibaba.druid.pool.…

如何在Office 2007中查看關于對話框和版本信息

One of our favorite readers wrote in today asking how to tell if his Word 2007 installation was running Service Pack 1, since he couldn’t find the About dialog, which got me thinking… I bet most people don’t know where it is! 我們最喜歡的一位讀者今天寫信…

windows全局熱鍵_在Windows中創建快捷方式或熱鍵以清除剪貼板

windows全局熱鍵Have you ever copied something to the clipboard that you don’t want to leave there in case somebody else is going to use your computer? Sure, you can copy something else to the clipboard real quick, but can’t you just make a shortcut or h…