目录
一.包的具体使用
虽然python3对包的要求降低了,不需要__init__.py也可以识别,但是为了兼容性考虑还是最好加上__init__.py
1.如果只想用包中的某几个模块,那么还是按照之前的导入方式即可
from aaa import md1, md2
2.如果直接导入包名
import aaa
导入包名其实就是导包下面的__init__.py文件,该文件内有什么名字就可以通过包点什么名字
二.编程思想的转变
1.面条版阶段
所有的代码全部堆叠在一起
2.函数版阶段
根据功能的不同封装不同的函数
3.模块版阶段
根据功能的不同拆分成不同的py文件
"""
第一个阶段可以看成是直接将所有的数据放在C盘
视频 音频 文本 图片
第二个阶段可以看成是将C盘下的数据分类管理
视频文件夹 音频文件夹 文本文件夹 图片文件夹
第三个阶段可以看成是将C盘下的数据根据功能的不同划分到更合适的位置
系统文件夹 C盘
视频文件夹 D盘
图片文件夹 E盘
ps:类似于开公司(小作坊 小公司 上市公司)
为了资源的高效管理
"""
三.软件开发目录规范
文件及目录的名字可以变换 但是思想是不变的而(分类管理)。目录规范主要规定开发程序得到过程中针对不同的文件功能需要做不同的分类。
myproject项目文件夹
-
bin文件夹
主要存放项目启动文件
start.py 启动文件可以放在bin目录下,也可以直接在项目根目录
-
conf文件夹
主要存放项目配置文件
settings.py 里面存放项目的默认配置 一般都是大写
-
core文件夹
主要存放项目核心文件
src.py 里面存放项目核心功能
-
interface文件夹
主要存放项目接口文件
goods.py 根据具体业务逻辑划分对应的文件
user.py account.py
-
db文件夹
主要存放项目相关数据
userinfo.txt
db_handler.py 存放数据库操作相关的代码
-
log文件夹
主要存放项目日志文件
log.log
-
lib文件夹
主要存放项目公共功能
common.py
-
readme文件夹
主要存放项目相关说明
-
requirements.txt文件
主要存放项目所需要模块及版本
四.常用内置模块
1.collections模块
-
具名元组:namedtuple
from collections import namedtuple # 表示二维坐标系 point = namedtuple('点',['x', 'y']) # 生成点信息 p1 = point(1, 2) print(p1) # 点(x=1, y=2) print(p1.x) # 1 print(p1.y) # 2 card = namedtuple('扑克牌', ['num', 'color']) c1 = card('A', '♠') c2 = card('A', '♥') c3 = card('A', '♣') c4 = card('A', '♦') print(c1, c1.num, c1.color) print(c2, c2.num, c2.color) print(c3, c3.num, c3.color) print(c4, c4.num, c4.color)
-
队列
队列与堆栈
队列:先进先出
堆栈:先进后出
队列和堆栈都是一边只能进一边只能出
2.时间模块
-
时间的三种表现形式
1.时间戳
秒数
2.结构化时间
主要是给计算机看的 人看不适应
3.格式化时间
主要是给人看的
-
import time
print(time.time()) # 距离1970年01月01日 00:00:00所经过的时间(秒) print(time.localtime()) # 结构化时间 time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=16, tm_min=30, tm_sec=14, tm_wday=2, tm_yday=292, tm_isdst=0) print(time.strftime('%Y/%m/%d')) # 2022/10/19 '''其中/就是链接符,可以根据喜好自定义(- .)都可以 ''' print(time.strftime('%Y/%m/%d %H:%M:%S')) # 2022/10/19 16:40:30 print(time.strftime('%Y/%m/%d %X')) # 2022/10/19 16:40:30 %X就是%H:%M:%S time.sleep(数字) # 让程序原地阻塞指定的秒数
-
import datetime
import datetime print(datetime.datetime.now()) # 2022-10-19 16:49:26.261324 现在的时间 print(datetime.datetime.today()) # # 2022-10-19 16:49:26.261324 现在的时间 print(datetime.date.today()) # 2022-10-19 今天的日期 ''' datetime 年月日 时分秒 date 年月日 time 十分秒(后续会有此规律) ''' from datetime import date, datetime print(date.today()) # 2022-10-19 print(datetime.today()) # 2022-10-19 16:56:27.700645 print(datetime.utcnow()) # 2022-10-19 08:58:07.193017 utc指的是世界协调时间 import datetime c = datetime.datetime(2017, 5, 23, 12, 20) print('指定日期:', c) # 指定日期: 2017-05-23 12:20:00 from datetime import datetime d = datetime.strptime('2017/9/30', '%Y/%m/%d') print(d) # 2017-09-30 00:00:00 e=datetime.strptime('2017年9月30日星期六','%Y年%m月%d日星期六') print(e) f=datetime.strptime('2017年9月30日星期六8时42分24秒','%Y年%m月%d日星期六%H时%M分%S秒') print(f) import datetime ctime = datetime.date.today() print(ctime) # 2022-10-19 time_del = datetime.timedelta(days=3) print(ctime + time_del) # 2022-10-22 ctime = datetime.datetime.today() print(ctime) # 2022-10-19 17:16:06.855204 time_del = datetime.timedelta(minutes=20) print(ctime + time_del) # 2022-10-19 17:36:06.855204
3.随机数模块
import random
print(random.random()) # 随机产生0到1之间的小数
print(random.randint(1, 6)) # 随机产生1到6之间的整数
print(random.randrange(1, 100, 2)) # 随机产生指定的整数 这里的2就是步长1 3 5 7
print(random.choice(['一等奖', '二等奖', '三等奖', '谢谢惠顾'])) # 随机抽取一个样本 '谢谢惠顾'
print(random.sample(['jason', 'kwvin', 'tony', 'oscar', 'jerry', 'tom', 2])) # 随机抽取指定样本数 ['tom', 'jason']
l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A]
random.shuffle(l1) # 随机打乱数据集
print(l1)
面试题
'''产生图片验证码:每一位都可以是大写字母 小写字母 数字 4位'''
def get_code(n):
code = ''
for i in range(n):
# 1.先产生随机的大写字母 小写字母 数字
random_upper = chr(random.randint(65, 90))
random_lower = chr(random.randint(97, 122))
random_int = str(random.randint(0, 9))
# 2.随机三选一
temp = random.choice([random_upper, random_lower, random_int])
code += temp
return code
res = get_code(4) # 括号内传几 就会产生几位的验证码
print(res)
标签:10,内置,编程,datetime,random,文件夹,模块,time,print
From: https://www.cnblogs.com/LZXSDM/p/16807391.html