Python模块time和random

1、python程序架构 一个Python程序通常包括一个顶层程序文件和若干个模块文件。顶层文件包含了程序的主要控制流程,模块文件是为顶层文件或其他模块提供各种功能性组件,模块首次导入(或重载)时,Python会立即执行模块文件的顶层程序代码(不在函数内的代码),而位于函数主体内的代码直到函数被调用后才会执行。 2、模块的执行环境 模块是被导入的,但模块也可以导入和使用其他模块,这些模块可以用Python或其它编程语言写成 模块可内含变量、函数以及类来进行其工作,而函数和类可以包含变量和其它元素 3、导入模块 在导入模块时只能使用模块名,而不能使用带.py后缀的模块文件名

import语句:
            导入指定的整个模块,包括生成一个以模块名命名的名称空间            
                    import module1[,module2[,...moduleN]]
            建议一个import语句只导入一个模块            
                    import module as module_aliasfrom-import语句:
            常用于只导入指定模块的部分属性至当前名称空间            
                   from module import name1[,name2[,...nameN]]          
                   import和from-import是赋值语句            
                   import和from是可执行语句,类似于def,因此,它们可以嵌套在if测试中,出现于def中等等
            Python执行到这些语句时才会对其进行解析,这意味着,所有来自模块的属性仅在import语句执行后才能使用
模块就是名称空间
            模块的名称空间可以通过属性__dict__或dir(M)获取
                模块属性可通过点号(.)运算符获取,格式为M.attr
            模块是一个独立的作用域(本地变量就是全局变量)

4、import的工作机制 import语句导入指定的模块时会执行三个步骤 1、找到模块文件 在指定的路径下(sys.path)搜索模块文件 2、编译成字节码 文件导入时就会编译,因此,顶层文件的.pyc字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件 3、执行模块的代码来创建其所定义的对象 模块文件中的所有语句会依次执行,从头到尾,而此步骤中任何对变量名的赋值运算,都会产生所得到的模块文件的属性 注意:模块只在第一次导入时才会执行如上步骤,后续的导入操作只不过是提取内存中已加载的模块对象,reload()可用于重新加载模块

三、time

time模块用来操作时间值 时间戳:time.time() 格式化时间:字符串表示,time.strftime('%Y-%m-%d') 结构化时间:元组表示,time.localtime(), time.gmtime()

asctime:返回时间格式Sun Mar 18 10:51:28 2018
In [1]: import time
In [2]: time.asctime()
Out[2]: 'Sun Mar 18 10:51:28 2018'In [3]: time.asctime(time.localtime())
Out[3]: 'Sun Mar 18 10:51:45 2018'ctime:将自纪元以来的时间以秒为单位转换为本地时间的字符串,相当于time.asctime(time.localtime())
In [4]: time.ctime()
Out[4]: 'Sun Mar 18 10:55:26 2018'gmtime:当前UTC时间
In [7]: time.gmtime()
Out[7]: time.struct_time(tm_year=2018, tm_mon=3, tm_mday=18, tm_hour=2, tm_min=58, tm_sec=1, tm_wday=6, tm_yday=77, tm_isdst=0)localtime:返回本地时间
In [9]: time.localtime()
Out[9]: time.struct_time(tm_year=2018, tm_mon=3, tm_mday=18, tm_hour=11, tm_min=3, tm_sec=56, tm_wday=6, tm_yday=77, tm_isdst=0)
strptime:将传入的时间转换为str格式的时间
In [11]: time.strptime('2018-3-18', '%Y-%m-%d')
Out[11]: time.struct_time(tm_year=2018, tm_mon=3, tm_mday=18, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=77, tm_isdst=-1)
strftime:将struct格式时间转换为指定格式的时间
In [13]: time.strftime('%Y-%m-%d')
Out[13]: '2018-03-18'In [14]: time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime())
Out[14]: '2018-03-18 03:09:47'mktime:将struct时间转换为时间戳
In [15]: time.mktime(time.strptime('2018-3-18', '%Y-%m-%d'))
Out[15]: 1521302400.0sleep:睡眠时间
In [16]: time.sleep(5)

datetime模块用来操作时间 datetime.date:表示日期的类。常用的属性有year, month, day datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond datetime.datetime:表示日期时间 datetime.timedelta:表示时间间隔,即两个时间点之间的长度 timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]]) strftime("%Y-%m-%d")

>>> import datetime                        
>>> import time#当前时间
>>> print(datetime.datetime.now())
2018-03-18 12:10:27.199643#格式化时间戳
>>> print(datetime.date.fromtimestamp(time.time()))2018-03-18#当前时间➕3天
>>> print(datetime.datetime.now() + datetime.timedelta(3))
2018-03-21 12:10:52.869598#当前时间➖3天
>>> print(datetime.datetime.now() + datetime.timedelta(-3))
2018-03-15 12:11:04.721491#当前时间➕3小时
>>> print(datetime.datetime.now() + datetime.timedelta(hours=3))
2018-03-18 15:11:18.628036#当前时间➖4小时
>>> print(datetime.datetime.now() + datetime.timedelta(hours=-4))
2018-03-18 08:11:42.096182#当前时间➕120分钟
>>> print(datetime.datetime.now() + datetime.timedelta(minutes=120))
2018-03-18 14:11:53.305800

四、random

随机数

In [1]: import random
In [2]: random.random()
Out[2]: 0.9381887159573181#随机返回1到10之间的整数
In [3]: random.randint(1,10)
Out[3]: 8#从1到10中,2为步长随机返回一个数
In [4]: random.randrange(1,10,2)
Out[4]: 5#随机返回序列中的元素In 
[5]: random.choice([1,2,3,4])
Out[5]: 3#打乱序列中的元素顺序
In [10]: l1 = [1,2,3,4]
In [11]: random.shuffle(l1)
In [12]: l1
Out[12]: [1, 2, 4, 3]#随机返回序列中的2个元素
In [13]: random.sample(l1,2)Out[13]: [2, 4]

例:生成验证码

import randomdef rand_num():
    code = ''
    for i in range(8):
        add = random.choice([random.randrange(10),chr(random.randrange(65,91))])
        code += str(add)
    print(code)
rand_num()

原文发布于微信公众号 - 编程坑太多(idig88)

原文发表时间:2018-03-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux系统运维

awk工具

1847
来自专栏杨龙飞前端

proxy思考

1995
来自专栏SeanCheney的专栏

Scrapy的CrawlSpider用法

rules是一组Rule对象。每条Rule定义了抓取网页的方式。如果多条规则匹配到同一链接,根据定义规则的顺序,使用第一个链接。

1413
来自专栏屈定‘s Blog

Java学习记录--委派模型与类加载器

最近在读许令波的深入分析Java Web技术内幕一书,对于学习Java以来一直有的几个疑惑得到了解答,遂记录下来.

1387
来自专栏Django Scrapy

JavaScript注释规范

1883
来自专栏佳爷的后花媛

tp中的M,D,C,A,I,S方法

D方法实例化模型类的时候通常是实例化某个具体的模型类,如果仅仅是对数据表进行基本的CURD操作的话,可以使用M方法.由于不要加载具体的模型类,所以性能会更好.如...

811
来自专栏我是攻城师

深入理解Java类加载器机制

Java里面的类加载机制,可以说是Java虚拟机核心组件之一,掌握和理解JVM虚拟机的架构,将有助于我们站在底层原理的角度上来理解Java语言,这也是为什么我们...

2062
来自专栏xingoo, 一个梦想做发明家的程序员

MFC常用的类详细介绍

常用的MFC类 CRuntimeClass结构 在CRuntimeClass结构中定义了类名、对象所占存储空间的大小、类的版本号等成员变量及动态创建对象、派生关...

1985
来自专栏IT派

爬虫工程师面试题总结,带你入门Python爬虫

3953
来自专栏后台全栈之路

图文并茂解释内存池原理

在 C 语言的动态申请内存技术中,相比起 alloc/free 系统调用,内存池(memory pool)优点很多。

8526

扫码关注云+社区

领取腾讯云代金券