zoukankan      html  css  js  c++  java
  • 模块与包(8)

    第8章  复杂程序组织
    模块:
    包含函数或者类的Python程序
    导入模块形式:
    import 模块名
    import 模块名 as 新名字      
    from 模块名 import 函数名
    from 模块名 import *    #导入模块中的所有代码
    使用import和from导入,调用函数的不同:
    使用import导入模块,模块名.函数名;使用from导入模块,直接使用函数名调用


    模块位置
    Windows下,默认模块的查找路径为Python的安装目录及几个子目录
    Linux下木默认模块查找路径为/usr/lib、/usr/lib64及其它们的几个子目录下

    指定模块的位置:
    import sys
    sys.path.append('E:\module')

    Python中被作为模块引用的.py文件会被编译成.pyc文件
    可以收手工编译.py文件:
    import py_compile
    py_compile.compile('a8_2.py')

    具有独立运行能力的模块
    在Python中,如果程序作为模块被导入,则其__name__属性被设置为模块名。
    如果程序独立运行,则其__name__属性被设置为"__main__".
    因此可以通过__name__属性来判断程序的运行状态

    编写程序作为模块导入,可以将模块的主要功能以实例的形式放在if语句中,可以方便测试模块是否能正常运行
    形式:

    if __name__=='__main__':
    m_t_pr()                       #调用模块中的函数
    print(name)                    #访问模块中的变量

    包:有效避免名字冲突
    包其实是包含__init__.py文件的目录

    例:在主程序中调用handle包中的index.py模块中的hdl函数,可以使用三种方法导入:
    import handle.index                        导入后调用handle.index.hdl()
    from handle import index                   导入后调用index.hdl()
    from handle.index import hdl               导入后调用hdl()

    包中模块相互引用:
    例:
    grnd/
        __init__.py
        prnta
            __init__.py
            suba.py
            sub
                __init__.py
                sona.py
        prntb
            __init__.py
            subb.py
            subc.py

    1.同一包下,subb.py要调用subc.py中代码:import subc
    2.调用子包中的模块,suba.py调用sona.py中代码:from .sub import sona
    3.调用同级别包中的另一模块,必须从该包的上级开始导入,subb.py调用suba.py中代码:from grnd.prnta import subc


    标准库
    random

    random.random()              #随机生成0-1中的数
    random.randint(0,10)             #随机生成0-10中的整数
    random.choice((1,2,3,4))          #列表中随机返回元素
    random.shuffle(alst)              #对列表alst随机乱序

    日期与时间类:calender、datetime、time

    time.time()   #获取初始时间至现在的秒数
    datetime.datetime.now()   #获取本地的日期/时间
    datetime.datetime.utcnow()   #获取当前的UTC日期/时间

  • 相关阅读:
    领域模型(domain model)&贫血模型(anaemic domain model)&充血模型(rich domain model)
    XSS攻击&SQL注入攻击&CSRF攻击?
    算法笔记_054:Prim算法(Java)
    算法笔记_053:最优二叉查找树(Java)
    算法笔记_052:蓝桥杯练习Multithreading(Java)
    算法笔记_051:荷兰国旗问题(Java)
    算法笔记_050:硬币收集问题(Java)
    算法笔记_049:奇偶数排序(Java)
    算法笔记_048:找零问题(Java)
    算法笔记_047:复数运算(Java)
  • 原文地址:https://www.cnblogs.com/MUMO/p/5749949.html
Copyright © 2011-2022 走看看