模块与包(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日期/时间

原文地址:https://www.cnblogs.com/MUMO/p/5749949.html