包及简单模块
包是一種通過使用.模塊名來組織Python模塊名稱空間的方式
包就是一個包含有__init__.py文件的文件夾,所以我們創建包的目的就是為了用文件夾將文件/模塊組織起來
在Python3中,即使包下沒有__init__文件,import包仍然不會報錯,而在Python2中,包下一定要有該文件否則報錯
2.創建包的目的不是為了運行而是被導入,包只是模塊的一種形式,包的本質就是一種模塊
包的本質是一個文件夾,功能越多,模塊越多,我們需要文件夾將模塊組織起來,提高程序的結構性和可維護性
單獨導入包名稱時不會導入包中所有包含的所有子模塊
絕對導入,以執行文件的路徑為起始點開始導入稱之為絕對導入
優點:執行文件與被導入的模塊都可以使用
缺點:所有導入都是以sys.path為起始點導入麻煩
相對導入:以.為起始代替路徑只能在一個包中使用不能用于不同目錄中
優點:導入更加簡單
缺點:只能在導入包中的模塊才能使用
1.什么是序列化
序列化就是將內存中的數據類型轉成另外一種格式
即字典----->序列化------>其他的格式--------------->存到硬盤
硬盤--------->讀取---------->其他格式-------------->反序列化---------------->字典
2.為什么要序列化?
持久保存程序的運行狀態
數據的跨平臺交互
2.如何序列化?
json:
優點:這種格式是一種通用的格式,所有的編程語言都能識別
缺點:不能是被所有python類型
json格式不能識別單引號
piclke:
優點:能識別所有Python類型
缺點;只能被Python這門語言識別
json使用dumps()方法將數據序列化參數為序列化對象,
也可以使用dump()方法直接寫入文件并序列化,需要的參數是序列化對象及文件對象
讀取json序列化的字符,可以使用load()方法與loads()方法
其中load()方法參數為文件對象,loads()參數類型字符串
pickle可以識別python類型
方法與json相同,不同點是讀寫都是bytes類型
時間分為三種模式:
1.時間戳
time.time()方法可以得到
2.格式化的字符串
time.strftime('%Y-%m-%d %H :%M;%s %p')
3.結構化的時間對象:
使用time.localtime()
時間轉換
時間戳=====>struct_time=========>格式化的字符串
1 struct_time=time.localtime(time.time()) 2 res=time.strftime('%Y-%m-%d',struct_time)?
格式化的字符串======>struct_time=======>時間戳
1 struct_time=time.strptime('2017-03-11','%Y-%m-%d') 2 res=mktime(struct_time)) 1 localtime() 2 將一個時間戳轉換為當前時區的struct_time,參數未提供時默認為當前時間 3 gmtime()類似于localtime()將時間戳轉換為0時區 4 mktime()將一個struct_time轉化為時間戳 5 time()返回當前時間戳 6 strftime('%Y-%m-%d %H-%M%S')格式化時間 7 time.strptime(string[, format]) 8 把一個格式化時間字符串轉化為struct_time。實際上它和strftime()是逆操作。 9 print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X')) 10 time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, 11 tm_wday=3, tm_yday=125, tm_isdst=-1) 12 在這個函數中,format默認為:"%a %b %d %H:%M:%S %Y"。 13 asctime([t]) : 把一個表示時間的元組或者struct_time表示為這種形式:'Sun Jun 20 23:21:05 1993'。 14 如果沒有參數,將會將time.localtime()作為參數傳入。 15 print(time.asctime())#Sun Sep 11 00:43:43 2016 16 ctime([secs]) : 把一個時間戳(按秒計算的浮點數)轉化為time.asctime()的形式。如果參數未給或者為 17 None的時候,將會默認time.time()為參數。它的作用相當于time.asctime(time.localtime(secs))。 18 print(time.ctime()) # Sun Sep 11 00:46:38 2016 19 print(time.ctime(time.time())) # Sun Sep 11 00:46:38 2016 20 import datetime 萬惡的十五字 1 import random 2 3 print(random.random())#(0,1)----float 大于0且小于1之間的小數 4 print(random.randint(1,3)) #[1,3] 大于等于1且小于等于3之間的整數 5 print(random.randrange(1,3)) #[1,3) 大于等于1且小于3之間的整數 6 print(random.choice([1,'23',[4,5]]))#1或者23或者[4,5] 7 print(random.sample([1,'23',[4,5]],2))#列表元素任意2個組合 8 print(random.uniform(1,3))#大于1小于3的小數,如1.927109612082716 9 item=[1,3,5,7,9] 10 random.shuffle(item) #打亂item的順序,相當于"洗牌" 11 print(item) 12 復制代碼 13 import random 14 def make_code(n): 15 res='' 16 for i in range(n): 17 s1=chr(random.randint(65,90)) 18 s2=str(random.randint(0,9)) 19 res+=random.choice([s1,s2]) 20 return res 21 22 print(make_code(9)) random 1 import random 2 3 print(random.random())#(0,1)----float 大于0且小于1之間的小數 4 5 print(random.randint(1,3)) #[1,3] 大于等于1且小于等于3之間的整數 6 7 print(random.randrange(1,3)) #[1,3) 大于等于1且小于3之間的整數 8 9 print(random.choice([1,'23',[4,5]]))#1或者23或者[4,5] 10 print(random.sample([1,'23',[4,5]],2))#列表元素任意2個組合 11 12 print(random.uniform(1,3))#大于1小于3的小數,如1.927109612082716 13 14 item=[1,3,5,7,9] 15 random.shuffle(item) #打亂item的順序,相當于"洗牌" 16 print(item) 17 復制代碼 18 import random 19 def make_code(n): 20 res='' 21 for i in range(n): 22 s1=chr(random.randint(65,90)) 23 s2=str(random.randint(0,9)) 24 res+=random.choice([s1,s2]) 25 return res 26 27 print(make_code(9)) 這里什么都沒有?
轉載于:https://www.cnblogs.com/suncunxu/p/10071248.html
總結
- 上一篇: 18.12.04 有品面试小记
- 下一篇: 利用zookeeper实现分布式服务故障