zoukankan      html  css  js  c++  java
  • Python模块

    https://www.cnblogs.com/drchen/p/6799551.html

    python的标准安装中包含标准库

    一、导入模块:

    1.导入既有(标准库)模块

    import math (从默认的路径中寻找math模块)

    python解释器从哪里查找模块呢?即搜索路径,目录列表可以在sys模块的path变量中找到  ,sys.path,打印出来

    import sys,pprint

    pprint.pprint(sys.path)  //pprint为智能打印输出

    2.导入外部(自己写的)模块

    import sys

    sys.path.append('c:/python')     //模块路径

    import hello                               //模块的文件名应该为hello.py

    import hello as hi                  //模块可以起别名

    内部逻辑:导入模块的时候,会生成  modulename.pyc,.pyc文件是编译好的python能够有效处理的文件,.pyc文件会随着.py文件的更新而更新

    模块只有在第一次导入到程序时被执行

    二、访问模块:

    1.访问模块中的函数:模块名.functionname()    

    2.访问模块中的变量:模块名.globalname

    所有模块都有一个内置属性__name__   ,它的值取决于如何应用模块:

    1.当import 一个模块,__name__=模块名

    2.当运行一个模块,__name__='__main__' (默认为__main__)

    if __name__=='__main__': test()   可以理解为当独立运行该模块的时候(不包括被import),执行test()函数。如果该模块被导入的时候(即__name__='module name'),不执行该if下面的语句,直接用模块名.方法名使用

    三、使用包

    包就是模块所在的目录,为了让python将其作为包对待,包中必须包含一个名为__init__.py的文件,(可以把它想象成模块中的构造函数,用来初始化的作用)如果访问__init__.py文件中的变量PI,则使用包名.PI即可

    ~/python/

    ~/python/drawing/                       //包drawing

    ~/python/drawing/__init__.py        //

    ~/python/drawing/colors.py        //包模块

    ~/python/drawing//shapes.py        //包模块

    假设包放置在了python搜索路径下

    import drawiing        //只能用__init__模块

    import drawing.colors     //可独立使用,colors模块可用,通过全名drawing.colors使用

    from drawing import shapes  //可独立使用,shapes模块可用,通过短名shapes使用

    四、探究模块

    不管是标准库还是添加的python其他功能模块,都可以用import导入进来查看里面的具体内容

    打印对象的所有特性,包括函数,类,变量等,以下划线开始的过滤掉不打印

    全部,包含以下划线开始的名字列表

    检查__all__变量的内容:

    __all__=["Error","copy","deepcopy"]   定义了模块的公有接口,即执行from copy import * 后,可以使用all变量中的函数,执行copy.PyStringMap 或 from copy import PyStringMap  才可以使用PyStringMap

    如果没有设定__all__,用from copy import * 后,导入所有不以下划线开头的全局名称。

    五、模块搜索路径

    python解释器在启动时会自动加载一些模块,可以使用sys.modules查看

    模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块。

    在初始化后,python程序可以修改sys.path,路径放到前面的优先于标准库被加载。

    把自定义的文件打包 zip module.zip foo.py bar.py

    import sys

    sys.path.append('module.zip)

    import foo,bar

    或者

    sys.path.append('module.zip/lib/python')

    -------------------------------------------------------------------

    help(copy.copy)                      帮助显示copy模块中的copy函数的用法

    help(copy)               帮助显示copy模块以及模块中的更多函数信息

    print copy.copy.__doc__         显示copy函数的文档

    http://python.org/doc/lib          在线文档

    print copy.__file__      查找copy模块源码文件在哪儿

    C:python27libcopy.py

    -----------------------------------------------------------------------------------------------------------------------------------

    五、常用模块

    sys模块
    argv 命令行参数,包括脚本名称
    exit([arg]) 退出当前程序,可选参数为给定的返回值或错误消息
    modules 映射模块名字到载入模块的字典
    path 查找模块所在目录的目录名列表
    platform 平台标示符
    stdin 标准输入流
    stdout 标准输出流
    stderr 标准错误流
       
    os模块
    environ 对环境变量进行映射
    system(command) 在子shell中执行操作系统命令
    sep 路径中的分隔符
    pathsep 分隔路径的分隔符
    linesep 行分隔符(' ',' ')
    urandom(n) 返回n字节的加密强随机数据
    fileinput模块  
    input([files[. inplace[. backup]]) 便于遍历多个输入流中的行
    filename() 返回当前文件的名称
    lineno() 返回当前(累计)的行数
    filelineno() 返回当前文件的行数
    isstdin() 检查最后一行是否来自sys.stdin
    isfirstline() 检查当前行是否是文件的第一行
    nextfile() 关闭当前文件,移动到下一个文件
    close() 关闭序列

    集合、堆、双端队列

    集合set

    a=set([1,2,3])

    b=set([2,3,4])

     
      a.union(b) set([1,2,3,4])
      a&b set([2,3])
      a.intersection(b) set([2,3])
      a.difference(b) set([1])
      a-b set([1])
      a.symmetric_difference(b) set([1,4])
      a ^ b set([1,4])
      a.copy() set([1,2,3])
         
    堆heap 模块名是heapq  
      heappush(heap,x) 将x入堆
      heappop(heap) 将堆中最小的元素弹出
      heapify(heap) 将heap属性强制应用在任意一个列表
      heapreplace(heap,x) 将堆中最小的元素弹出,同时将x入堆
      nlargest(n,iter) 返回iter中第n大的元素
      nsmallest(n,iter) 返回iter中第n小的元素
    双端队列deque from collections import deque  
      q=deque([6,0,1,2,3,4,5])  
      q.pop() 返回5,删除5
      q.popleft() 返回6,删除6
      q.rotate(3) 右移3位,此时q=deque([2,3,4,0,1])
      q.rotate(-1) 左移1位,此时q=deque([3,4,0,1,2])

     time模块

    包含9个整数的元祖(2008,1,21,12,2,56,0,21,0)表示   “2008年1月21日12点2分56秒,星期一,当年的第21天,无夏令时”。

    time.asctime()            返回‘Fri Dec 21 05:41:27  2008’

    asctime([tuple]) 将时间元祖转换为子串
    loacaltime([secs]) 将秒数转换为日期元祖,以本地时间为准
    mktime(tuple) 将时间元祖转换为本地时间
    sleep(secs) 休眠secs秒
    strptime(string[,format]) 将字符串解析为时间元祖
    time() 当前时间(新纪元开始后的秒数,以UTC为准)

    random模块

    random() 返回0<n<=1之间的随机实数
    getrandbits(n) 以长整型形式返回n个随机位
    uniform(a,b)

    返回随机实数n,其中a<=n<b

    randrange([start],stop,[step]) 返回range(start,stop,step)中的随机数
    choice(seq) 从序列seq中返回随意元素
    shuffle(seq[,random]) 原地指定序列seq
    sample(seq,n) 从序列seq中选择n个随机且独立的元素

    shelve模块

    简单的存储

    省略。。。。。。。。

  • 相关阅读:
    LOJ #3219. 「PA 2019」Iloczyny Fibonacciego (斐波拉契表示性质+FFT)
    一类区间修改问题的做法
    [百炼智能]hihoCoder挑战赛37 D Items(树状数组维护01背包—梦想成真!!!)
    LOJ #2092. 「ZJOI2016」大森林(lct)
    LOJ #3220. 「PA 2019」Terytoria(随机染色或线段树)
    Codeforces 223E. Planar Graph(平面图)
    JZOJ 6678. 【2020.05.01省选模拟】苏菲的世界 (simpson积分+几何法求多个圆的并的面积)
    Day3-Python基础3---函数介绍
    Day2-Python基础2---字符编码与转码
    Day2-Python基础2---集合和文件操作
  • 原文地址:https://www.cnblogs.com/zz27zz/p/7454667.html
Copyright © 2011-2022 走看看