首页 > 其他分享 >包的具体使用、常用内置模块

包的具体使用、常用内置模块

时间:2022-10-19 17:44:52浏览次数:60  
标签:常用 内置 random datetime tm 模块 time print 2017

包的具体使用

虽然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:类似于开公司(小作坊 小公司 上市公司)
	为了资源的高效管理
"""

软件开发目录规范

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 #导入 collections包的namedtuple方法
point = namedtuple('点',['x','y'])
p=point(1,2)
print(p) #点(x=1, y=2)
print(p.x) #1
print(p.y) #2
card=namedtuple('扑克牌',['num','cplor'])
c1=card('A','黑桃')
c2=card('B','红桃')
print(c1,c1.num,c1.cplor) #扑克牌(num='A', cplor='黑桃') A 黑桃
print(c2,c2.num,c2.cplor) #扑克牌(num='B', cplor='红桃') B 红桃
#deque
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
from collections import *
point=namedtuple('point',['x','y','r'])
print(point(1, 2,3))
q=deque(['a','b','c'])
q.append('x')
q.appendleft('y')
print(q)
deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。
使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。
如果要保持Key的顺序,可以用
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)])
defaultdict
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
values = [11, 22, 33,44,55,66,77,88,99,90]

my_dict = {}
原生字典解决方法
for value in  values:
    if value>66:
        if my_dict.has_key('k1'):
            my_dict['k1'].append(value)
        else:
            my_dict['k1'] = [value]
    else:
        if my_dict.has_key('k2'):
            my_dict['k2'].append(value)
        else:
            my_dict['k2'] = [value]
print(my_dict)#defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]})
Counter
Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value
from collections import *
c=Counter('asassdasdas')
print(c) #Counter({'s': 5, 'a': 4, 'd': 2})


2.队列
	队列与堆栈
		队列:先进先出
 		堆栈:先进后出
     对插入和删除操作的限定不同
    1. 队列:只能在表的一端进行插入,并在表的另一端进行删除;
    2. 栈:只能在表的一端插入和删除 
	队列和堆栈都是一边只能进一边只能出

常用内置模块之时间模块

Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。
"""
三种时间表现形式
    1.时间戳
        秒数
    2.结构化时间
        主要是给计算机看的 人看不适应
    3.格式化时间
        主要是给人看的
"""
import time
print(time.time()) #1666164179.9794426
print(time.time_ns())#1666164179979442700
print(time.localtime()) #time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=15, tm_min=20, tm_sec=59, tm_wday=2, tm_yday=292, tm_isdst=0)
print(time.strftime('%Y-%m-%d')) #2022-10-19
print(time.strftime('%Y/%m/%d')) #2022/10/19
print(time.strftime('%Y-%m-%d %H-%M-%S')) #2022-10-19 15-25-56
print(time.strftime('%Y-%3m-%d %X'))#2022-10-19 15:27:40
time.sleep(10)#暂停10秒
print(time.asctime())#Wed Oct 19 16:03:59 2022

img

python中时间日期格式化符号:
    %y 两位数的年份表示(00-99)
    %Y 四位数的年份表示(000-9999)
    %m 月份(01-12)
    %d 月内中的一天(0-31)
    %H 24小时制小时数(0-23)
    %I 12小时制小时数(01-12)
    %M 分钟数(00=59)
    %S 秒(00-59)
    %a 本地简化星期名称
    %A 本地完整星期名称
    %b 本地简化的月份名称
    %B 本地完整的月份名称
    %c 本地相应的日期表示和时间表示
    %j 年内的一天(001-366)
    %p 本地A.M.或P.M.的等价符
    %U 一年中的星期数(00-53)星期天为星期的开始
    %w 星期(0-6),星期天为星期的开始
    %W 一年中的星期数(00-53)星期一为星期的开始
    %x 本地相应的日期表示
    %X 本地相应的时间表示
    %Z 当前时区的名称
    %% %号本身
#时间戳-->结构化时间
#time.gmtime(时间戳)    #UTC时间,与英国伦敦当地时间一致
#time.localtime(时间戳) #当地时间。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间 
>>>time.gmtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
>>>time.localtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)

#结构化时间-->时间戳 
#time.mktime(结构化时间)
>>>time_tuple = time.localtime(1500000000)
>>>time.mktime(time_tuple)
1500000000.0
#结构化时间-->字符串时间
#time.strftime("格式定义","结构化时间")  结构化时间参数若不传,则显示当前时间
>>>time.strftime("%Y-%m-%d %X")
'2017-07-24 14:55:36'
>>>time.strftime("%Y-%m-%d",time.localtime(1500000000))
'2017-07-14'

#字符串时间-->结构化时间
#time.strptime(时间字符串,字符串对应格式)
>>>time.strptime("2017-03-16","%Y-%m-%d")
time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1)
>>>time.strptime("07/24/2017","%m/%d/%Y")
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)

img

#结构化时间 --> %a %b %d %H:%M:%S %Y串
#time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
>>>time.asctime(time.localtime(1500000000))
'Fri Jul 14 10:40:00 2017'
>>>time.asctime()
'Mon Jul 24 15:18:33 2017'

#时间戳 --> %a %b %d %H:%M:%S %Y串
#time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串
>>>time.ctime()
'Mon Jul 24 15:19:07 2017'
>>>time.ctime(1500000000)
'Fri Jul 14 10:40:00 2017'
import time
true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S'))
time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.gmtime(dif_time)
print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,
                                       struct_time.tm_mday-1,struct_time.tm_hour,
                                       struct_time.tm_min,struct_time.tm_sec))

计算时间差
datetime模块
import datetime
print(datetime.datetime.now())  # 2022-10-19 17:17:00.951505
print(datetime.datetime.today()) # 2022-10-19 17:17:00.951505
print(datetime.date.today())   # 2022-10-19
a=datetime.datetime.utcnow()
print(a)   #2022-10-19 09:22:51.151990
c=datetime.datetime(2017, 5, 23, 12, 20)
print('指定日期:',c)      #指定日期: 2017-05-23 12:20:00
from datetime import *
from datetime import datetime
d=datetime.strptime('2017/9/30','%Y/%m/%d')
print(d)
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)
g=datetime.strptime('9/30/2017','%m/%d/%Y')
print(g)
h=datetime.strptime('9/30/2017 8:42:50 ','%m/%d/%Y %H:%M:%S ')
print(h)
from datetime import datetime

i=datetime(2017,9,28,10,3,43)
print(i.strftime('%Y年%m月%d日%A,%H时%M分%S秒'))
j=datetime(2017,9,30,10,3,43)
print(j.strftime('%A,%B %d,%Y'))
k=datetime(2017,9,30,9,22,17)
print(k.strftime('%m/%d/%Y %I:%M:%S%p'))
l=datetime(2017,9,30)
print(l.strftime('%B %d,%Y'))

常用内置模块之随机数模块

import random

print(random.random())  # 随机产生0到1之间的小数
print(random.randint(1, 6))  # 随机产生1到6之间的整数
print(random.randrange(1, 100, 2))  # 随机产生指定的整数
print(random.choice(['一等奖', '二等奖', '三等奖', '谢谢惠顾']))  # 随机抽取一个样本  '二等奖'
print(random.choices(['一等奖', '二等奖', '三等奖', '谢谢惠顾']))  # 随机抽取一个样本   ['二等奖']
print(random.sample(['jason', 'kevin', 'tony', 'oscar', 'jerry', 'tom'], 2))  # 随机抽指定样本数  ['tom', 'jerry']
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(10)
print(res)
res = get_code(4)
print(res)

标签:常用,内置,random,datetime,tm,模块,time,print,2017
From: https://www.cnblogs.com/bnmm/p/16807191.html

相关文章

  • Linux服务器下php网站解决故障常用方法
    1、查看nginx进程命令:ps-ef|grepnginx2、查看php进程命令:ps-aux|grepphp3、查看cpu、内存使用情况命令:top4、查看磁盘空间df-h5、查看当前目录的大小du-sh......
  • 包的概念、开发目录规范、常见内置模块知识合集
    包的概念、开发目录规范、常见内置模块知识合集目录包的概念、开发目录规范、常见内置模块知识合集一、包的具体使用二、编程思想的转变三、软件开发目录规范四、常见内置......
  • 内置模块之collections
    内置模块之collections具名元组:nametuple具名元组就是对元组和元组元素都命名了。命名后,除了更好辨识,还可以通过元组元素的名字来取值了(可以不限于索引取值了)fromcoll......
  • 每天学习一个Android中的常用框架——0.目录
    文章目录​​1.前言​​​​2.环境​​​​3.目录​​​​3.1持久化​​​​3.1.1Litepal​​​​3.1.2GreenDao​​​​3.1.3Realm​​​​3.1.4DBFlow​​​​3.2网......
  • 常见的内置模块
    包的具体使用  导入包里面的模块可以使用from...import...如果使用import...导入包时,则包名下必须包含__init__.py文件该文件内有什么名字就可以......
  • Windows常用快捷键
    Ctrl+C:复制Ctrl+V:粘贴Ctrl+A:全选Ctrl+X:剪切Ctrl+Z:撤销Ctrl+S:保存Alt+F4:关闭窗口Shift+Delete:永久删除Window+D:回到桌面Window+R......
  • Istio常用命令
    Istio使用帮助#istioctl--helpIstioconfigurationcommandlineutilityforserviceoperatorstodebuganddiagnosetheirIstiomesh.Usage:istioctl[comm......
  • ubuntu20.04内核升级,增加kvm模块
    ubuntu20.04内核升级,增加kvm模块原创 南哥小白 南小白攻防 2022-03-3115:43    本操作主要是升级内核,体验一下源码编译内核的操作步骤。准备虚拟机以及......
  • JAVA 常用的是字符串处理函数1
     publicStringconcat(Stringstr)  //该方法的参数为一个String类对象 //作用是将参数中的字符串str连接到原来字符串的后面 //返回字串的长度,这里的长度指的......
  • ModStartCMS v5.0.0 模块市场优化,模型类型修改
    企业内容建站系统ModStartCMSv5.0.0模块市场优化,模型类型修改系统介绍ModStart是一个基于Laravel模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安......