list
模塊
程序主入口
第三方模塊
自定義包
sorted
高階函數(shù)
日期時間
模塊和程序入口
? 模塊(一個.py文件):提供額外功能,可以提高代碼復(fù)用性 還可以使程序模塊化
? 導(dǎo)入時起別名:
給模塊起
import 模塊名 as 別名
給模塊內(nèi)的成員其別名
from xxx import 成員 as 別名
當(dāng)from xxx import *的時候 如果我們在xxx里的一些成員不想被外部使用 那么我們可以使用__all__ = ["放你想暴露的成員"]
程序入口
我們程序運行的開始位置
__name__ 在主文件 打印結(jié)果是__main__
在非主文件(模塊文件) 打印的時候是模塊的名字
if __name__ == "__main__":
第三方模塊
? 系統(tǒng):time functool keyword
? 自定義模塊
? 第三方:其他組織 或個人編寫的 開源的python模塊
? 管理:pip 是管理python第三方包
pip命令
(python -m) pip install 包名==版本號 安裝
uninstall 包名 卸載
list 查看已經(jīng)安裝的包
freeze 查看已經(jīng)安裝的包
freeze >> 文件 把已經(jīng)安裝的包寫到文件
install -r 文件名 根據(jù)文件里寫的包和對應(yīng)的版本依次安裝
Django Flask web.py pandads numpy PIL(Pillow) pygame itchat ....
uuid 生成唯一標(biāo)示
import uuid
res = uuid.uuid4()
# print(res)
res = str(res).replace("-", "")
print(res[:4])
自定義包
? 常識:同一個文件夾下邊 不能有同名的文件
? 包:幫我們完成多文件命名
? 形式:
在目錄下有一個__init__.py的文件 一般用來初始化
? 包和目錄的區(qū)別:
? 包里有初始化文件
? python2 不能在目錄下導(dǎo)入一個模塊 而必須要使用包的形式
? python3是可以再目錄下導(dǎo)入模塊文件
? 導(dǎo)入包
? from 包名.文件名 import 成員
from suibian.file_one import add
或者from suibian import file_one
sorted
排序(不改變原來的值)會產(chǎn)生新的列表
參數(shù):iterable 放一個可以迭代對象
? key 指定排序的方式
? reverse 默認(rèn)是Fasle表示升序,如果設(shè)置成True那么是降序
普通列表排序
a = ["abd",'ks', 'jeje']
# a.sort(key=len, reverse=True)
# print(a)
res = sorted(a, key=len, reverse=True)
字典
dict_data = {"語文":59, "數(shù)學(xué)": 79, "化學(xué)":90, "物理":30, "python": 100}
# if "yu" in dict_data:
res = sorted(dict_data.items(), key=lambda item:item[1])
列表套字典
a = [{"name":"dada", "age":18},
{"name": "tom", "age":16},
{"name": "old tom", "age":80},
{"name": "xiaoming", "age":6}
]
def key1(item):
return item['age']
res = sorted(a, key=lambda item:item["age"], reverse=True)
高階函數(shù)
map(func, 序列)
? [func(i) for i in 序列]
? 功能:將序列的每一項放入到func這個函數(shù)里執(zhí)行
reduce(func, 序列)
? 功能:func函數(shù) 接收兩個參數(shù),將兩個數(shù)結(jié)果累計然后繼續(xù)與下一個元素結(jié)果累計的過程
res = reduce(add, [1,2, 3, 4, 5])
相當(dāng)于:(((1+2)+3)+4)
filter 過濾
filter(func, 序列)
func需要一個參數(shù)
如果func返回了True 那就保留 否則剔除掉
時間
時間戳:
? 1970年1月1日零時到現(xiàn)在經(jīng)歷的秒數(shù)
time
時間格式化的占位符
%y 兩位數(shù)的年份表示(00-99)
%Y 四位數(shù)的年份表示(000-9999)
%m 月份(01-12)
%d 月內(nèi)中的一天(0-31)
%H 24小時制小時數(shù)(0-23)
%I 12小時制小時數(shù)(01-12)
%M 分鐘數(shù)(00-59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應(yīng)的日期表示和時間表示
%j 年內(nèi)的一天(001-366)
%p 本地AM.或PM.的等價符
%U 一年中的星期數(shù)(00-53)星期天為星期的開始
%w 星期(0-6),星期天為星期的開始
%W 一年中的星期數(shù)(00-53)星期一為星期的開始
%x 本地相應(yīng)的日期表示
%X 本地相應(yīng)的時間表示
%% %號本身
操作
import time
# 拿時間戳
res = time.time()
print(res)
#獲得當(dāng)前時間的元組
res = time.localtime(1539244193.6709678)
print(res)
# 休眠函數(shù)
# time.sleep(5)
# print("睡醒了")
#時間的格式化
f_str = time.strftime("%Y-%m-%d %p %I:%M:%S", res)
print(f_str)
#
time_str = '2018-10-11 PM 03:49:53'
# 將字符串變成時間
my_time = time.strptime(time_str, "%Y-%m-%d %p %I:%M:%S")
print(my_time)
# 給出時間元組 獲得時間戳
res = time.mktime(time.localtime())
datetime
? 年份的最大值是9999
? 最小是1
# 時間的替換
print(today.replace(minute=0, second=0))
# 時間的加減
res = today + datetime.timedelta(days=1,minutes=60)
print(res)
# 將時間轉(zhuǎn)字符串格式化
res = datetime.datetime.now().strftime("%Y/%m/%d")
print(res)
# 字符串轉(zhuǎn)時間
res = datetime.datetime.strptime('2018/10/11', "%Y/%m/%d")
print(res)
import datetime
res = datetime.datetime.now()
print(res)
today = datetime.datetime.today()
print(today)
# 轉(zhuǎn)成時間元組
print(today.timetuple())
calendar
日歷
import calendar
# calendar.
res = calendar.calendar(2018)
print(res)
# 某年某月的日歷
res = calendar.month(2018, 10)
print(res)
# 某年某月的日期在星期上的表現(xiàn)(二維的列表)
res = calendar.monthcalendar(2018,10)
print(res)
# 判斷是是閏年
res = calendar.isleap(2018)
print(res)
?