zoukankan      html  css  js  c++  java
  • 入门到放弃之py 模块

    什么是模块

    模块就是一个包含了python定义声明的文件,文件名就是模块

    名字加上.py的后缀。但其实import加载的模块分为4个类别

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

    2 已被编译为共享库或dll的c或c++扩展

    3包好一组模块的包

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

    为何要使用模块?

    如果你退出python解释器然后重新进入,那么你之前定义的函数

    或者变量都将要丢失,因此我们通将程序写到文件中

    便永久保存下来,需要时候就通过python test.py方式

    去执行,此时test.py被称为脚本script。

    随着程序的发展,功能越来越多,为了方便管理

    我们通常将程序分成一个个的文件,这样做的程序结构更清晰

    ,方便管理。

    常用模块

    在内置数据类型(dict、list、tuple)的基础上,

    collestions模块还提供了几个额外的数据类型:

    Counter、deque、defaultdict、namedtuple和OrderedDict

    等。

    1 namedtuple:生成可以使用名字来访问元素内容的tup

    2 deque双端队列,可以快速的从另外一侧追加退出对象

    3 Counter计数器 主要用来计数

    4 OrderedDict 有序字典

    5 defaultdict 带有默认值的字典

    namedtuple

    我们知道tuple 可以表示不变集合。列如,一个点的

    二维坐标可以表示成:

    >>>p=(1,2)

    但是看到(1,2)很难看出这个tuple是用来表示一个

    坐标的。

    这是 namedtuple就派上用场:

    >>> from collections import namedtuple 

    >>>point=namemdtuple ('point',['x','y'])

    >>>p=point(1,2)

    >>>p.x

    1

    >>>p..y

    2

    类似的,如果要用坐标和半径表示一个圆,也可以用

    namedtuple定义:

    circle=namedtuple([‘x’,'y','r'])

    deque 

    使用list存储数据时,按索引访问元素很快,但是插入

    和删除元素就很慢了,因为list是线性存储,数据量大

    时候插入和删除效率很低

    deque 是为了高效实现插入和删除的双向列表,

    适合用于队列和栈:

    from collections import deque

    >>>q=deque(['a','b','c'])

    >>>q.append('x')

    >>>q.appendleft('y')

    >>>q

    deque(['y','a','b','c','x'])

    deque除了实现list的append()和pop外,还支持

    appendleft()和popleft()

    这样就可以非常高效等等往头部添加或者删除元素

    OrderedDict

    使用dict时,key是无序的,在对dict做迭代时,

    我们无法确定Key 的顺序。

    如果要保持key 的顺序,可以用OrderedDict:

    >>>from collections import OrderedDict

    d=dict(['a',1),('b'2),('c',3])

    d # dict 的key 是无序的

    {'a':1,'c':3,'b':2}

    >>>od=OrderedDict(['a',1,('b',2),('c',3)])

    >>>od#OrderedDict的key是有序的

    OrderedDict([('a',1),('b',1),('b',2),('c',3)])

    OrderedDict的key 会按照插入的顺序排列,不是key本身排序:

    >>>od=OrderedDict()

    >>>od['z']=1

    >>>od['y']=2

    >>>od['x']=3

    >>>od.keys()#按照插入的key的顺序返回

    ['z','y','x']

    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 valuse:

    if value>66:

    if my_dict.has_key('k1'):

    my_dict['k1'].append(value)

    else:

    my_dict['k1'].append(value)

    else:

    if my_dict.has_key('k2'):

    my_dict['k2'].append(value)

    else:

    my_dict['k2']=[value]

    from collections import defaultdict

    values=[11,22,33,44,55,66,77,88,99,90]

    my_dict=defaultdict(list)

    for value in values:

    if value>66:

    my_dict['k1'].append(value)

    slse:

    my_dict[my_dict['k2'].append(value)

    >>>from collections import defaultdict

    >>>dd=defaultdict(lambda:'N/A')

    >>>dd['key1']='abc'

    >>>dd['key1']#key1存在

    'abc'

    >>>dd['key2']#ke2不存在,返回默认

    'N/A'

    counter

    counterl类的目的是用来跟着值出现的次数。它是一个无序的

    容器类型,以字典的健值对形式存储,其中元素作为key

    其计数作为value。计数值可以是任意的lnterger(包括0和负数)

    counter类和其他语言的bags或multisets很相似

    c = Counter('abcdeabcdabcaba')
    print c
    输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1}


    时间模块
    方法 倒入模块
    time.sleep(secs)
    (线程)推迟指定的时间运行,单位为秒。
    2 time.time
    获取当前时间戳

    %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 当前时区的名称
    %% %号本身

    python中时间日期格式化符号:

  • 相关阅读:
    Object.keys方法之详解
    ackbone入门系列(5)路由
    backbone入门系列(4)集合
    backbone入门系列(3)视图
    backbone入门系列(2)模型
    backbone入门系列(1)基本组成部分
    $(document).ready(function(){ })、window.onload=function(){}与(function($){...})(jQuery)的对比和作用
    backbone笔记1,MVC
    用Object.prototype.toString()来检测对象的类型
    Python生成requirements.txt方法
  • 原文地址:https://www.cnblogs.com/djjv/p/7300227.html
Copyright © 2011-2022 走看看