模块概述:time_random模块

 

模块

模块一共三种:
1、python标准库
2、第三方模块
3、应用程序自定义模块


使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,
因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突

 

模块导入方法

 


1 import 语句
当我们使用import语句的时候,Python解释器是怎样找到对应的文件的呢?答案就是解释器有自己的搜索路径,存在sys.path里
import module1[, module2[,... moduleN]         #如:import time  多个可用逗号间隔import time,os
注意:因此若像我一样在当前目录下存在与要引入模块同名的文件,就会把要引入的模块屏蔽掉。

2 from…import 语句
这个声明不会把整个modulename模块导入到当前的命名空间中,只会将它里面的name1或name2单个引入到执行这个声明的模块的全局符号表
from modname import name1[, name2[, ... nameN]]
from cal_test import abc #在python解释器path路径当中存在时,导入相对应的.py模块中的对应方法,节省内存
print(abc(9,8))
print(sys.path)

 3 From…import* 语句


这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
大多数情况, Python程序员不使用这种方法,因为引入的其它来源的命名,很可能覆盖了已有的定义。
from cal_test import *  #导入该模块所以方法,不推荐使用

4 运行本质 
无论1还是2,首先通过sys.path找到test.py,然后执行test脚本(全部执行),
区别是1会将test这个变量名加载到名字空间,而2只会将add这个变量名加载进来。
    1 import test
    2 from test import add



 

包package

什么是包:1、包文件夹与普通文件夹的区别就是__init__.py的文件,如果有就是包文件夹
     2、调用包就是执行包下的__init__.py文件
'''
如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。
举个例子,一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块。
现在,假设我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名:

请注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,
否则,Python就把这个目录当成普通目录(文件夹),而不是一个包。__init__.py可以是空文件,
也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字
'''
文件结构:

包引入函数

from module_import_test import test  #支持向下模块查找导入(无限向下,支持多层)
print(test.abc(9,8))

from module_import_test.module import test1  #如果向下多层,可一层一层的写出用'.'拼接
print(test1.abc(9,8))

将路径导入值sys.path路径当中
'''
import sys,os
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR) #只是临时修改,想要永久修改,必须修改系统path环境变量
import name

用到的知识点:
__file__ 获取当前执行文件的文件名称
os.path.abspath(path) 返回path规范化的绝对路径
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
'''


__name__
定义:文件执行自己是name=main,其它文件调入name=文件名

if __name__=='__main__':
    print('ok')
    print(__file__)

两大作用:

1、判断是否是主执行函数
'''
如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,
但是我们如果从另外一个.py文件通过import导入该文件的时候,
这时__name__的值就是我们这个py文件的名字而不是__main__。
'''
2、代码测试
'''
这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码,
我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,
调试代码能够正常运行!
'''
 

 

time模块

import time
#时间戳   多用于时间计算  大减小——>转换
print(time.time())     #1481534591.112827秒,是从1970年凌晨到/的秒数

# 结构化时间
# 结构化时间内的都能取出
print(time.localtime())
t = time.localtime()
print(t.tm_year)
print(t.tm_mon)

#英国世界标准时间(UTC),全球360度,公分24区,北京在东八区中,与实际时间相差8小时
print(time.gmtime())

#_________转换______________
print(time.localtime(time.time())) #把时间戳转换为结构化时间

print(time.mktime(time.localtime())) #把结构化时间转换为时间戳

print(time.strftime('%Y-%m-%d:%X',time.localtime()))    #将结构化时间转换为字符串时间  X代表时分秒

print(time.strptime('2016:12:24:17:50:36','%Y:%m:%d:%X'))    #将字符串时间转换为结构化时间

print(time.ctime())  #时间戳转成固定格式的时间 Mon Dec 12 17:55:40 2016
print(time.asctime()) #结构化转成固定格式的时间 Mon Dec 12 17:55:40 2016 与ctime相同


import datetime
print(datetime.datetime.now())  #2016-12-12 18:01:03.635808
#把datetime转成字符串
def datetime_toString(dt):
    return dt.strftime("%Y-%m-%d-%H")

#把字符串转成datetime
def string_toDatetime(string):
    return datetime.strptime(string, "%Y-%m-%d-%H")

#把字符串转成时间戳形式
def string_toTimestamp(strTime):
    return time.mktime(string_toDatetime(strTime).timetuple())

#把时间戳转成字符串形式
def timestamp_toString(stamp):
    return time.strftime("%Y-%m-%d-%H", tiem.localtime(stamp))

#把datetime类型转外时间戳形式
def datetime_toTimestamp(dateTim):
    return time.mktime(dateTim.timetuple())

def _utc_to_localtime(cls, str_time):
    """
    将字符串的utc时间,改为本地时间
    :param str_time:
    :return:
    """
    utc_time = datetime.strptime(str_time, UTCTIMEFORMAT).replace(tzinfo=cls.UTC_TZ)
    local_time = utc_time.astimezone(cls.CTS_TZ).strftime(ISOTIMEFORMAT)
    return local_time

 


 

random模块

import random
ret = random.random() #0-1之间的浮点数
print(int(ret*10))

ret = random.randint(1,3) #随机整数,并可给出区间(1-3) 1=<ret<=3
print(ret)

ret = random.randrange(1,3) #随机整数,并可给出区间(1-3) 1=<ret<3
print(ret)

ret = random.choice([11,22]) #list 随机元素,两个随机取一个
print(ret)

ret = random.sample([11,22,33],2) #list 随机元素 可取出制定量,比如2个
print(ret)

ret = [1,2,3,4,5]
random.shuffle(ret) #打乱顺序
print(ret)

'''
#隨機驗證碼
import random
def check_code():
    checkcode = ''
    for i in range(6):
        nb_code = random.randrange(0,1)
        if nb_code!=i:
            temp = chr(random.randint(65,90))
        else:
            temp = random.randint(0,9)
        checkcode += str(temp)
    return checkcode
val = check_code()
print (val)
check_code()
'''

 

posted @ 2016-12-14 22:16  总要做些什么  阅读(114)  评论(0)    收藏  举报