Python(18)自定義模塊及系統模塊

一、自定義模塊

當你導入一個模塊,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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章