zoukankan      html  css  js  c++  java
  • 一大群模块

    什么是模块?

       常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。

       但其实import加载的模块分为四个通用类别: 

      1 使用python编写的代码(.py文件)

      2 已被编译为共享库或DLL的C或C++扩展

      3 包好一组模块的包

      4 使用C编写并链接到python解释器的内置模块

    为何要使用模块?

       如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。

        随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用,

                              collections模块

    在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。

    namedtuple

    from collections import namedtuple
    Point = namedtuple('Point',['x','y'])
    p = Point(1,2)
    print(p.x,p.y)
    print(p.y)

    Circle = namedtuple('Cirle',['x','y','r'])
    c = Circle(1,2,3)
    print(c)
    print(c.y)

    deque
    队列
    import queue
    q = queue.Queue()
    q.put(10)
    q.put(5)
    q.put(6)
    print(q)
    print(q.get())
    print(q.get())
    print(q.get())
    双端队列
    from collections import deque
    q = deque([1,2])
    q.append('a') #从后面添加数据
    print(q)
    q.appendleft('b') #从前面添加数据
    print(q)
    print(q.pop()) #从后面取数据
    print(q.popleft()) #从前面取数据
    q.insert(1,5) #插队
    print(q)

    一个字典使用了OrderedDict以后就会变得有序
    from collections import OrderedDict
    d = dict([('a',1),('b',2),('c',3)])
    print(d)
    od = dict(OrderedDict([('a',1),('b',2),('c',3)]))
    print(od)
    注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:
    od = OrderedDict()
    od['z'] = 1
    od['y'] = 2
    od['x'] = 3
    print(od.keys()) # 按照插入的Key的顺序返回

    defaultdict用它的原因在于,一般在循环当中给key增加值的时候,首先要判断这个key是否存在在
    使用defaultdict不需要判断,可以直接增加
    from collections import defaultdict
    values = [11, 22, 33,44,55,66,77,88,99,90]
    my_dict = defaultdict(list) #defaultdict后面可以放数据类型的参数
    for value in values: #放入后再次创建的key默认对应的value就是这个参数
    if value>66:
    my_dict['k1'].append(value)
    elif value<66:
    my_dict['k2'].append(value)
    print(my_dict)
    defaultdict(这里一般只能放能够被调用的,比如list),假如想放个数字,那就。
    defaultdict(lambda : 5)就是把数字5放了进去


    Counter
    Counter计算用的,可以计算某个字符串里面某个元素出现的次数,以字典形式返回
    
    
    time模块
    表示时间的三种方式
    时间戳(timestamp)
    格式化的时间字符串(Format String): ‘1999-12-06’
    元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
    import time
    time.sleep() #sleep后面可以放参数,以秒为单位,比如放个3表示在这里停顿3秒
    time.time() #时间戳,通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
    #我们运行“type(time.time())”,返回的是float类型。
    print(time.strftime("%Y-%m-%d %H:%M:%S")) #格式化输出
    时间元组:localtime将一个时间戳转换为当前时区的struct_time
    print(time.localtime())
    时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
    时间戳-->结构化时间
    time.gmtime(时间戳) #UTC时间,与英国伦敦当地时间一致
    time.localtime(时间戳) #当地时间。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间
    print(time.gmtime(1500000000)) #里面可以放参数,参数的意思是从1970年开始距今的秒数
    print(time.localtime(1500000000))
    结构化时间-->时间戳 
    time.mktime(结构化时间)
    time_tuple = time.localtime(1500000000)
    print(time_tuple)
    print(time.mktime(time_tuple))




    计算时间差
    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))

    import time
    print(time.ctime()) #如果不传参数返回的是当前的时间格式化


    random模块
    import random
    print(random.random()) #随机小数,大于0且小于1之间的小数
    print(random.uniform(1,3)) #大于1小于3的小数
    print(random.randint(1,4)) #大于等于1且小于等于4之间的整数
    print(random.randrange(1,10,2))# 大于等于1且小于10之间的奇数
    print(random.choice([1,'23',[4,5]]))#随机选择一个返回,1或者23或者[4,5]
    print(random.sample([1,'23',[4,5]],2))#以列表元素形式输出任意2个组合

    item=[1,3,5,7,9]
    random.shuffle(item) #打乱item的顺序
    print(item)

    生成随机验证码
    import random
    def v_code():
    code = ''
    for i in range(6):
    num=random.randint(0,9)
    alf=chr(random.randint(65,90))
    add=random.choice([num,alf])
    code=''.join([code,str(add)])
    return code
    print(v_code())


    os模块
    #os模块是与操作系统交互的一个接口
    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
    os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
    os.curdir  返回当前目录: ('.')
    os.pardir  获取当前目录的父目录字符串名:('..')
    os.makedirs('dirname1/dirname2')    可生成多层递归目录
    os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
    os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
    os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
    os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
    os.remove()  删除一个文件
    os.rename("oldname","newname")  重命名文件/目录
    os.stat('path/filename')  获取文件/目录信息
    os.sep    输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
    os.linesep    输出当前平台使用的行终止符,win下为"	
    ",Linux下为"
    "
    os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
    os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
    os.system("bash command")  运行shell命令,直接显示
    os.popen("bash command).read()  运行shell命令,获取执行结果
    os.environ  获取系统环境变量
    
    os.path
    os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。
                            即os.path.split(path)的第二个元素
    os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
    os.path.isabs(path)  如果path是绝对路径,返回True
    os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
    os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
    os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
    os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
    os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
    os.path.getsize(path) 返回path的大小

    注意:os.stat('path/filename' 获取文件/目录信息 的结构说明
    stat 结构:
    
    st_mode: inode 保护模式
    st_ino: inode 节点号。
    st_dev: inode 驻留的设备。
    st_nlink: inode 的链接数。
    st_uid: 所有者的用户ID。
    st_gid: 所有者的组ID。
    st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
    st_atime: 上次访问的时间。
    st_mtime: 最后一次修改的时间。
    st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。


    sys模块
    sys模块是与python解释器交互的一个接口
    import sys
    print(sys.platform) #查看操作系统平台名称
    print(sys.version) #查看python解释器的版本
    print(sys.exit(1)) #退出程序,正常退出时exit(0),错误退出exit(1)
    #只有操作系统能感知到正常还是错误退出
    print(sys.path) #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

    print(sys.argv) #这个不知道怎么记,但是很重要
     






  • 相关阅读:
    The following untracked working tree files would be overwritten by merge
    如何删除git远程仓库项目的所有内容,重新提交所有内容
    Vue中引入bootstrap导致的CSS问题
    CSS实现垂直居中
    RESTful三问
    SAPUI5 freestyle vs SAP Fiori Elements —— 两种开发SAPUI5 Apps的方式对比
    团队1
    用户规格说明书
    MElv2.kkkK
    ME.kkkK
  • 原文地址:https://www.cnblogs.com/ddjl/p/8261018.html
Copyright © 2011-2022 走看看