包的具体使用
虽然python3对包的要求降低了 不需要__init__.py也可以识别 但是为了兼容性考虑最好还是加上__init__.py
1.如果只想用包中某几个模块 那么还是按照之前的导入方式即可
from aaa import md1, md2
2.如果直接导入包,包里的模块用点的方式用不了
import aaa
1.导入包名其实就是导包下面的__init__.py文件
2.该文件内有什么名字就可以通过包名点什么名字
3.想用包名点的方式用其它模块里的名字
4.需要在__init__.py文件里提前把其它模块的名字from aaa import md1,md2提前调用
编程思想的转变
1.面条版阶段
所有的代码全部堆叠在一起
2.函数版阶段
根据功能的不同封装不同的函数
3.模块版阶段
根据功能的不同拆分成不同的py文件
"""
第一个阶段可以看成是直接将所有的数据放在C盘
视频 音频 文本 图片
第二个阶段可以看成是将C盘下的数据分类管理
视频文件夹 音频文件夹 文本文件夹 图片文件夹
第三个阶段可以看成是将C盘下的数据根据功能的不同划分到更合适的位置
系统文件夹 C盘
视频文件夹 D盘
图片文件夹 E盘
ps:类似于开公司(小作坊 小公司 上市公司)
为了资源的高效管理
"""
软件开发目录规范
1.文件及目录的名字可以变换 但是思想是不变的 分类管理
2.目录规范主要规定开发程序的过程中针对不同的文件功能需要做不同的分类
myproject项目文件夹
1.bin文件夹 主要存放项目启动文件
start.py 启动文件可以放在bin目录下 也可以直接在项目根目录
2.conf文件夹 主要存放项目配置文件
settings.py 里面存放项目的默认配置 一般都是全大写
3.core文件夹 主要存放项目核心文件
src.py 里面存放项目核心功能
4.interface文件夹 主要存放项目接口文件
goods.py 根据具体业务逻辑划分对应的文件
user.py
account.py
5.db文件夹 主要存放项目相关数据
userinfo.txt
db_handler.py 存放数据库操作相关的代码
6.log文件夹 主要存放项目日志文件
log.log
7.lib文件夹 主要存放项目公共功能
common.py
8.readme文件 主要存放项目相关说明
9.requirements.txt文件 主要存放项目所需模块及版本
常用内置模块之collections模块
1.具名元组:namedtuple
from collections import namedtuple
point = namedtuple('点', ['x', 'y'])
p1 = point(1, 2)
print(p1)
print(p1.x)
print(p1.y)
card = namedtuple('扑克牌', ['num', 'color'])
c1 = card('A', '黑♠')
c2 = card('A', '红♥')
print(c1, c1.num, c1.color)
print(c2, c2.num, c2.color)
-----------------------------------------------------------------------
了解
1.队列
from multiprocessing import Queue
q = Queue(3)
q.put(111)
print(q.get())
队列与堆栈
队列:先进先出
堆栈:先进后出
队列和堆栈都是一边只能进一边只能出
2.有序字典
from collections import OrderedDict
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print(od)
for i in od:
print(i)
3.计数器
from collections import Counter
res = 'abahajansehfad'
ret = Counter(res)
print(ret)
Counter({'a': 5, 'h': 2, 'b': 1, 'j': 1, 'n': 1, 's': 1, 'e': 1, 'f': 1, 'd': 1})
常用内置模块之时间模块
import time
"""
三种时间表现形式
1.时间戳 # Timestamp
秒数
2.结构化时间 # struct_time
主要是给计算机看的 人看不适应
3.格式化时间 # Format string
主要是给人看的
"""
print(time.time())
print(time.strftime('%Y-%m-%d'))
print(time.strftime('%Y/%m/%d'))
print(time.strftime('%Y/%m/%d %H:%M:%S'))
print(time.strftime('%Y/%m/%d %X'))
time.sleep(10)
结构化时间转-----格式化时间-------strftime
结构化时间转-----时间戳-----------mktime
格式化时间转-----结构化时间-------strptime
时间戳转---------结构化时间-------iocaltime
'''
datetime 年月日 时分秒
date 年月日
time 时分秒(后续会有此规律)
'''
from datetime import datetime
import datetime
常用内置模块之随机数模块
import random
print(random.random())
print(random.randint(1, 6))
print(random.randrange(1, 100, 2))
print(random.choice(['一等奖', '二等奖', '三等奖', '谢谢惠顾']))
print(random.choices(['一等奖', '二等奖', '三等奖', '谢谢惠顾']))
print(random.sample(['jason', 'kevin', 'tony', 'oscar', 'jerry', 'tom'], 2))
l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
random.shuffle(l1)
'''产生图片验证码: 每一位都可以是大写字母 小写字母 数字 4位'''
def get_code(n):
code = ''
for i in range(n):
random_upper = chr(random.randint(65, 90))
random_lower = chr(random.randint(97, 122))
random_int = str(random.randint(0, 9))
temp = random.choice([random_upper, random_lower, random_int])
code += temp
return code
res = get_code(10)
print(res)
res = get_code(4)
print(res)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性