一、自定義模塊
當你導入一個模塊,python解釋器對模塊位置的搜索順序是:
1、當前目錄
2、如果不在當前目錄,Python則搜索在shell變量 PYTHONPATH 下的每個目錄。
3、如果都找不到,Python會查看默認路徑。UNIX下,默認路徑一般爲/usr/local/lib/python/。
模塊搜索路徑存儲在system模塊的 sys.path變量中。變量裏包含當前目錄,PYTHONPATH和由安裝過程決定的默認目錄。
自定義模塊
系統模塊:
sys 系統system模塊
右鍵 —— Mark Directory as Sources Root
將包作爲搜索路徑
自定義模塊格式:
自定義模塊:
xxx.py
import xxx
from xxx import xx
from xxx import * __all__ = []
__name__ ---> 自己: __main_
---> 別的使用: 模塊名
包:
user
__init__.py 只要包的導入,都會默認執行__init__.py文件 __all__ = [想要暴露的模塊] from 包名 import *
xxx.py
xx.py
add
article
aa.py
bb.py
from user.xx import add
add()
循環導入:避免
1、重構代碼
2、將導入語句放到函數中
3、把導入語句放到模塊最後
二、系統模塊
1、sys模塊 system系統模塊
sys: sys.path sys.version sys.argv
import sys
#路徑列表
print(sys.path)
#python版本
print(sys.version)
#執行時,給python解釋器傳遞參數 pycharm右上角文件名,Edit Configurations,在Parameters中填入參數
#運行程序時的參數
print(sys.argv) #打印['D:/.../PracticeProject/PythonProject/test.py', '100']
2、time 時間模塊
time模塊
1、時間戳
重點:
time()
sleep()
strftime(格式) %Y %m %d
瞭解:
t = time.localtime(t)
元組---> t.tm_year t.tm_mon
import time
t = time.time()
print(t) #1585206103.8941765 秒.精確值
# time.sleep(3)
t1 = time.time()
print(t1)
# 將時間戳轉成字符串
s = time.ctime(t)
print(s) #Thu Mar 26 15:04:25 2020
# 將時間戳轉成元組
lt = time.localtime(t)
print(lt) #time.struct_time(tm_year=2020, tm_mon=3, tm_mday=26, tm_hour=15, tm_min=5, tm_sec=18, tm_wday=3, tm_yday=86, tm_isdst=0)
print(lt.tm_yday) #86
print(lt.tm_hour) #15
# 將元組的時間戳 轉成 時間戳, 只返回到秒
t2 = time.mktime(lt)
print(t2) #1585206460.0
# 底層將時間戳轉成元組,再將元組的時間轉成字符串
s = time.strftime('%Y-%m-%d %H:%M:%S')
print(s) #2020-03-26 15:13:08
# 將字符串轉成元組的方式
r = time.strptime('2020/03/26', '%Y/%m/%d')
print(r) #time.struct_time(tm_year=2020, tm_mon=3, tm_mday=26, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=86, tm_isdst=-1)
3、datetime 日期時間模塊
datetime 模塊:
time 時間
date 日期 (data 數據)
datetime 日期時間 now()
timedelta 時間差/時間增量 timedelta(days=, weeks=)
import datetime
print(datetime.time.hour) #對象
print(time.localtime().tm_hour)
#因爲date是類,所以要求創建對象
d = datetime.date(2020, 3, 26)
print(d.day)
print(datetime.date.ctime(d))
#datetime 日期時間
#timedelta 兩個datetime 日期的差
print(datetime.date.today())
#時間差
time_del = datetime.timedelta(hours=2)
#datetime.datetime.now() --->得到當前的日期和時間
now = datetime.datetime.now()
print(now)
result = now + time_del
print(result)
緩存: 數據redis(key,value類型數據庫) 作爲緩存 大數據分析/集羣:redis分佈式緩存 redis.set(key, value, 時間差)
會話:session 內存緩存
4、random 隨機模塊
random.random() 0~1之間隨機數
random.randrange(1, 10, 2) 1~9,不包含10
random.randint(1, 10) 1~10之間隨機數
random.choice(list1) 隨機選擇列表中的某一元素
random.shuffle(list1) 打亂列表
import random
ran = random.random() #0~1之間的隨機小數
print(ran)
ran = random.randrange(1, 10, 2) #randrange(start, stop, step) 不包含stop
print(ran)
ran = random.randint(1, 10) #包含a, b
print(ran)
list1 = ['name1', 'aa', 'bbb', 'ccccc']
ran = random.choice(list1) #隨機選擇列表的內容
print(ran)
#洗牌
r = random.shuffle(list1) #打亂順序
print(list1)
#驗證碼 大小寫字母與數字的組合
def func():
code = ''
for i in range(4):
ran1 = str(random.randint(0, 9))
ran2 = chr(random.randint(65, 90))
ran3 = chr(random.randint(97, 122))
r = random.choice([ran1, ran2, ran3])
code += r
print(code)
func()
5、chr Unicode碼 ------> str
ord str ------> Unicode碼
print(chr(65))
print(ord('A'))
print(ord('上')) #19978
print(ord('下')) #19979
print(chr(19979))
6、標準庫中函數
print() input() list() str() dir() tuple() int() set()
chr() ord() bin() hex() oct() isinstance()
7、加密算法
hashlib 散列/哈希算法 包含:md5 sha1 sha256 加密後不能解密
base64 常用加密解密算法
import hashlib
msg = "this is important message"
md5 = hashlib.md5(msg.encode('utf-8'))
print(md5.hexdigest()) #十六進制加密 32位
sha1 = hashlib.sha1(msg.encode('utf-8'))
print(sha1.hexdigest()) #40位
sha256 = hashlib.sha256(msg.encode('utf-8'))
print(sha256.hexdigest()) #64位
password = '123456'
list1 = []
sha256 = hashlib.sha256(password.encode('utf-8'))
list1.append(sha256.hexdigest())
psd = input('請輸入密碼:')
for i in list1:
cur_sha256 = hashlib.sha256(psd.encode('utf-8'))
if cur_sha256.hexdigest() == i:
print('輸入密碼正確!')
break
else:
print('輸入密碼錯誤!')
8、第三方庫
圖片處理庫 pillow
http get、post請求 requests
導入庫的兩種方式:
1、在Pycharm 下方Terminal,輸入pip install 庫名
2、File——>Settings——>Project:項目名——>Project Interpreter(項目解釋器)——>點擊右側 + 號 ,在填出界面的搜索框中輸入需要導入的庫名稱——>點擊Install Package——>等待導入完成
import requests
response = requests.get('https://baidu.com/')
print(response.text)