一、自定义模块
当你导入一个模块,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)