包的概念、开发目录规范、常见内置模块知识合集

本文介绍了如何在Python中使用包组织模块,从模块封装到软件开发目录规范,以及展示了collections模块的collections.namedtuple、deque、OrderedDict、Counter和时间模块的用法,包括时间格式化、随机数生成。
摘要由CSDN通过智能技术生成

一、包的具体使用

1.什么是包
  包就是内部含有__init__文件的文件夹,该文件夹可包含多个模块文件,包也可以理解为管理多个模块文件的文件夹
2.包有什么用
  包的作用就是包含多个模块,例如我们下载第三方模块numpy时,模块下会产生一个numpy文件夹,里面包含了numpy管理的多个模块
3.使用
 eg:
     from demo import a,b
# 导入包名就是导入里面的__init__文件,该文件内有什么名字就可以通过包名点什么名字使用
在Python解释器中,包文件夹内有没有__init__.py文件已经不重要了,但是在Python2中解释器中文件夹必须用__init__.py文件才能当做一个包,不然他只是一个文件

二、编程思想的转变

目前会经历的三个阶段:
1.小白阶段
  懂得不多,写代码的时候只会像面条一样从上往下的逻辑写,全部堆在一起
2.函数阶段
  有了一点的函数思维了,根据功能封装不同的函数,然后进行调用
3.模块阶段
  能够应用别人的东西写简洁的代码,根据功能的不同拆分成不同的py文件

三、软件开发目录规范

为什么要规范文件目录?
  为了程序的可读性和可维护性,当我们吧项目文件进行分类之后大大提高了后期的维护和查看,只需要到对应的文件夹名下找到具体的文件进行查看就好了
文件名作用写法
bin文件夹用于存放项目的启动文件start.py
conf文件夹用于存放配置文件setting.py
core文件夹用于存放核心逻辑文件src.py
db文件夹用于存放数据文件userinfo.py
lib文件夹用于存放程序的公共功能文件common.py
log文件夹用于存放日志文件log.log
interface文件夹用于存放接口文件user.py/order.py
readme文件夹用于存放项目的说明书/
requirements文件夹用于存储程序所需的第三方模块名和版本requirements.txt

四、常见内置模块之collections

1.具名元组namedtuple

from collections import namedtuple
point = namedtuple('坐标系',['x','y'])
res = point(99,66)
print(res)     # 坐标系(x=99, y=66)
print(res.x)   # 99
from collections import namedtuple
card = namedtuple('扑克牌', ['num', 'color'])
c1 = card('J', '红♠')
c2 = card('K', '黑♥')
print(c1, c1.num, c1.color)      # 扑克牌(num='J', color='红♠') J 红♠
print(c2, c2.num, c2.color)      # 扑克牌(num='K', color='黑♥') K 黑♥

2.双端队列deque

from collections import deque
a = deque()
a.append(11)
a.append(22)
a.appendleft(999)
print(a)         # deque([999, 11, 22])
队列与堆栈:
    队列:先进先出
    堆栈:先进后出

3.有序字典OrderedDict

from collections import OrderedDict
d = dict([('a',1),('b',2),('c',3)])
print(d)                     # {'a': 1, 'b': 2, 'c': 3}
od = OrderedDict([('a',1),('b',2),('c',3)])
print(od)                    # OrderedDict([('a', 1), ('b', 2), ('c', 3)])

4.计数Counter

from collections import Counter
res = 'ahhgggasdggdhhdsgcsxshshhsggahaaaa'
res1 = Counter(res)
print(res1)    
# Counter({'h': 8, 'g': 8, 'a': 7, 's': 6, 'd': 3, 'c': 1, 'x': 1})

五、常见内置模块之时间模块

1.常见时间格式化符号

符号属性
%y表示年份(00-99)
%m表示月份(1-12)
%d表示一年中的天数(1-31)
%H表示24小时制的时数(0-24)
%I表示12小时制的时数(0-12)
%M表示分钟(0-59)
%S表示秒数(0-59)
%w表示星期几
%X表示当地的日期表示

2.时间戳

时间戳表示从1970-1-1-0时到现在经过了多长时间
import time
now = time.time()
print(now)    # 1666168383.992469
print(time.localtime())   # time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=16, tm_min=33, tm_sec=3, 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:35:16
print(time.strftime('%Y-%M-%d %X'))      # 2022-10-19 16:35:16
# strftime格式化时间

3.格式化时间

from datetime import
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)
# strptime 按照特定时间格式将字符串转换为时间类型

六、常见内置模块之随机数模块

产生图片验证码
def get_code(n):
    code = ''
    for i in range(n):
        range_upper = chr(random.randint(65,90))
        range_lower = chr(random.randint(97,122))
        range_int = str(random.randint(0,9))
        temp = random.choice([range_upper,range_lower,range_int])
        code += temp
    return code
res = get_code(5)
print(res)   # 9UhL6

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值