day21-time与random等常用模块与包

 2018-08-05

# ********************day21-time与random等常用模块与包 *******************

# 参考资料
# python模块(转自Yuan先生)
# https://www.cnblogs.com/wupeiqi/articles/4938499.html


# =====>>>>>>内容概览
# =====>>>>>>内容概览
# =====>>>>>>内容概览

# ------------------------------------------------------------
# # 1、import 模块文件
# # # 导入整个模块文件
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 2、from 文件 import 函数名
# # # 导文模块文件中所需要用到的函数
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 3、from 文件 import *
# # # 导文模块文件中 所有 的函数
# # # 这种方式是不退荐的,因为会把一个模块文件中的所有函数全部都导入进来,原因:
# # # 1、导入多
# # # 2、导入的函数名,可能与当前所用的文件中所定义的文件,出现名称重复,导致功能不正常
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 4、sys.path
# # # 执行文件所在的路径
# # 模块 import:
# 1、执行 对应文件
# 2、引入变量名
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 5、# from 子目录 import 文件
# # # from my_module import cal
# # # 从该运行文件中的子集目录中,引入文件
# # # 需要注意的是,引入的文件 没有包含其他的引入文件
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 6、from 子目录 import 文件1
# # # from my_module import main
# # # 需要注意的是,引入的文件1中,包含其他的文件2,文件2与文件1 同目录
# # # ===>>以下的实例是会报错的!
# # # 出错的原因是找不到cal文件
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 7、from 子目录 import 文件1
# # # from my_module import main
# # # 需要注意的是,引入的文件1中,包含其他的文件2,文件2与运行文件 同目录
# # # ===>>以下的实例是 不会 报错的!注意与上面区别
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 8、包的概念
# # # 包的概念:包是用来组织模块的!在pycharm建立的python包中,下面会自动生成一个__init()__文件
# # # 调用包就是执行包下的__init__.py文件
# # # 引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,view.py模块的
# # # 名字就变成了hello_django.app01.views,类似的,manage.py的模块名则是hello_django.manage。
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 9、from 包1.包2.包3.被调用文件 import 函数名
# # # from web.web1.web3.cal import add
# # # 从包中引入文件
# ------------------------------------------------------------

# ------------------------------------------------------------
# 10、from 包1.包2 import 包3
# # # from web.web1 import web3
# # # 不修改包3下的文件__init()__,从包中引入文件
# # # ===>>>注意:报错,原因是这种方式在不修改包3下的文件__init()__<<<===
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 11、from 包1.包2 import 包3
# # # from web.web1 import web3
# # # ''修改''包3下的文件__init()__,从包中引入文件,添加内容如下:
# # # from . import cal
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 12、总结,关于包下的内容调用
# # # 推荐使用方式一与方式二
# # # 方式三不推荐
# # # 方式一:from 包1.包2.包3 import 被调用文件
# # # from web.web1.web3 import cal
# # #
# # # 方式二:from 包1.包2.包3.被调用文件 import 函数名
# # # from web.web1.web3.cal import add
# # #
# # # 方式三:from 包1.包2 import 包3
# # # from web.web1 import web3
# # # ''修改''包3下的文件__init()__
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 13、__name__
# # # 注意区别执行文件下的 __name__ 是 __main__,而被调用文件下的__name__是一个路径
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 14、if __name__ == "__main__":
# # # 只是执行该文件下才会使用
# # # 功能一:如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,
# # # 但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字
# # # 而不是__main__。
# # #
# # # 功能二:调试代码的时候,在”if __name__ == '__main__'“中
# # # 加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题
# # # 的时候,直接执行该模块文件,调试代码能够正常运行!
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 15、sleep
# # # Python time sleep() 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 16、time.time()
# # # 时间戳(timestamp) :
# # # 打印的时间是从1970.1.1 00:00凌晨开始算,多少秒
# # # 时间戳(timestamp) : 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
# # # 我们运行“type(time.time())”,返回的是float类型。
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 17、time.localtime()
# # # 当前的时间,是以我所在的时区进行计算的,其默认值为time.time()
# # # 元组(struct_time) : struct_time元组共有9个元素共九个元素:
# # # (年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
# # #
# # # int tm_sec; /* 秒 – 取值区间为[0,59] */
# # # int tm_min; /* 分 - 取值区间为[0,59] */
# # # int tm_hour; /* 时 - 取值区间为[0,23] */
# # # int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
# # # int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
# # # int tm_year; /* 年份,其值等于实际年份减去1900 */
# # # int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
# # # int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
# # # int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的时候,tm_isdst为0;不了解情况时,tm_isdst()为负。
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 18、time.gmtime()
# # # gmtime()方法是将一个时间戳转换为UTC时区。其默认值为time.time()
# # # 用法与localtime差不多,只是基准的时区不一样
# # # 元组(struct_time) : struct_time元组共有9个元素共九个元素:
# # # (年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 19、time.mktime()
# # # 将一个struct_time转化为时间戳。
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 20、time.strftime()
# # # 将一个struct_time转化为时间戳。
# # # 把一个代表时间的元组或者struct_time(如由time.localtime()和
# # # time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。
# # # 如果元组中任何一个元素越界,ValueError的错误将会被抛出。
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 21、time.strptime
# # # 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 22、time.asctime()
# # # asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:
# # # 'Sun Jun 20 23:21:05 1993'。
# # # 如果没有参数,将会将time.localtime()作为参数传入。
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 23、time.asctime()
# # # 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为
# # # None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 24 、datetime
# # # 获取当前的时间
# ------------------------------------------------------------


# ------------------------------------------------------------
# # 25、关于文件命名
# # # 自己定义的文件,不可与python自己已经自带的库重命,这个原则是与函数的命名是类似的
# # # 一旦自己的文件与python库中的重名,那么就会可能出现python库中的文件模块无法被调用
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 26、random() 方法
# # # 返回随机生成的一个实数,它在[0,1)范围内。
# ------------------------------------------------------------


# ------------------------------------------------------------
# # 27、randint() 方法
# # # 语法为: random.randint(a,b)
# # # 函数返回数字 N ,N 为 a 到 b 之间的数字(a <= N <= b),包含 a 和 b。
# ------------------------------------------------------------


# ------------------------------------------------------------
# # 28、randrange() 方法
# # # 语法为: random.randrange ([start,] stop [,step])
# # # 参数
# # # start -- 指定范围内的开始值,包含在范围内。
# # # stop -- 指定范围内的结束值, 不包含 在范围内。
# # # step -- 指定递增基数。
# ------------------------------------------------------------


# ------------------------------------------------------------
# # 29、choice() 方法
# # # choice() 方法,对给定的括号内的内容进行选择,默认抽取一项,
# # # 返回一个列表,元组或字符串的随机项。
# ------------------------------------------------------------


# ------------------------------------------------------------
# # 30、sample() 方法
# # # sample() 方法,对给定的括号内的内容进行选择,根据给定决定抽取的不重复项数
# ------------------------------------------------------------


# ------------------------------------------------------------
# # 31、uniform() 方法
# # # uniform() 方法将随机生成下一个实数,它在 [x, y) 范围内。
# # # 注意:uniform()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
# ------------------------------------------------------------


# ------------------------------------------------------------
# # 32、shuffle() 方法
# # # shuffle() 方法将序列的所有元素随机排序。
# # # 注意:uniform()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
# ------------------------------------------------------------

# ------------------------------------------------------------
# # 33、实例应用:生成验证码
# ------------------------------------------------------------

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# ********************day21-time与random等常用模块与包 *******************
# ********************day21-time与random等常用模块与包 *******************
# ********************day21-time与random等常用模块与包 *******************
'''
# ------------------------------------------------------------
# # 1、import 模块文件
# # # 导入整个模块文件
# ------------------------------------------------------------
同目录下,文件cal.py,内容:
#!/usr/bin/env python
# -*- coding:utf-8 -*-

print("ok1")
def add(x,y):
    return x+y

print("ok2")

def sub(x,y):
    return x-y

print("ok3")

'''


#
# import cal
# print("add: ",cal.add(3,4))
# print("sub: ",cal.sub(3,4))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # ok1
# # ok2
# # ok3
# # add:  7
# # sub:  -1
# #
# # Process finished with exit code 0





'''
# ------------------------------------------------------------
# # 2、from 文件 import 函数名
# # # 导文模块文件中所需要用到的函数
# ------------------------------------------------------------

同目录下,文件cal.py,内容:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
print("ok----->>1")
def add(x,y):
    return x+y
print("ok----->>2")
def sub(x,y):
    return x-y
print("ok----->>3")

'''
# from cal import add
# from cal import sub
#
# print("add: ",add(3,4))
# print("sub: ",sub(3,4))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # ok----->>1
# # ok----->>2
# # ok----->>3
# # add:  7
# # sub:  -1
# #
# # Process finished with exit code 0


'''

# ------------------------------------------------------------
# # 3、from 文件 import *
# # # 导文模块文件中  所有  的函数
# # # 这种方式是不退荐的,因为会把一个模块文件中的所有函数全部都导入进来,原因:
# # # 1、导入多
# # # 2、导入的函数名,可能与当前所用的文件中所定义的文件,出现名称重复,导致功能不正常
# ------------------------------------------------------------
#
#

同目录下,文件cal.py,内容:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
print("ok----->>1")
def add(x,y):
    return x+y
print("ok----->>2")
def sub(x,y):
    return x-y
print("ok----->>3")

'''

# from cal import *
#
# '''
# # 打开这段函数后,将会出现cal中的add,被替代,结果会是17
# def add(x,y):
#     return x+y+10
# '''
# print("add: ",add(3,4))
# print("sub: ",sub(3,4))

# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # ok----->>1
# # ok----->>2
# # ok----->>3
# # add:  7
# # sub:  -1
# #
# # Process finished with exit code 0


'''


# ------------------------------------------------------------
# # 4、sys.path
# # # 执行文件所在的路径
# # 模块 import:
#             1、执行 对应文件
#             2、引入变量名
# ------------------------------------------------------------
#
'''
#
# import sys
# print("sys.path:
",sys.path)
#
# D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# sys.path:
#  ['D:\C_cache\py\day21_time_random_ChangYongMoKuaiYuBao\day21_lesson_package',
# 'D:\C_cache\py\day21_time_random_ChangYongMoKuaiYuBao',
#  'D:\Anaconda3\python36.zip',
#  'D:\Anaconda3\DLLs', 'D:\Anaconda3\lib',
#  'D:\Anaconda3', 'D:\Anaconda3\lib\site-packages',
# 'D:\Anaconda3\lib\site-packages\win32',
# 'D:\Anaconda3\lib\site-packages\win32\lib',
#  'D:\Anaconda3\lib\site-packages\Pythonwin',
# 'D:\Program Files (x86)\PyCharm 2018.1.3\helpers\pycharm_matplotlib_backend']
#
# Process finished with exit code 0



'''

# ------------------------------------------------------------
# # 5、# from 子目录 import 文件
# # # from my_module import cal
# # # 从该运行文件中的子集目录中,引入文件
# # # 需要注意的是,引入的文件     没有包含其他的引入文件
# ------------------------------------------------------------

文件目录结结
day21_lesson_package\test.py( 该运行文件 )
day21_lesson_package\my_modulecal.py

===》》main.py内容cal.py   内容
def add(x,y):
    return x+y
    
def sub(x,y):
    return x-y
'''


# from my_module import cal
#
# print("add: ",cal.add(3,4))
# print("sub: ",cal.sub(3,4))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # add:  7
# # sub:  -1
# #
# # Process finished with exit code 0





'''

# ------------------------------------------------------------
# # 6、from 子目录 import 文件1
# # # from my_module import main
# # # 需要注意的是,引入的文件1中,包含其他的文件2,文件2与文件1  同目录
# # # ===>>以下的实例是会报错的!
# # # 出错的原因是找不到cal文件
# ------------------------------------------------------------


文件目录结结
day21_lesson_package\test.py( 该运行文件 )
day21_lesson_package\my_modulemain.py
day21_lesson_package\my_modulecal.py

===>>>main.py内容
import cal
def run():
    print("here is run function:
",cal.add(3,5))
def only_main():
    print("here is only_main function, not other directory
")
    
===>>>cal.py   内容
def add(x,y):
    return x+y
def sub(x,y):
    return x-y
    

'''

# from my_module import main
# main.only_main()
# main.run()

# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # Traceback (most recent call last):
# #   File "D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py", line 206, in <module>
# #     from my_module import main
# #   File "D:C_cachepyday21_time_random_ChangYongMoKuaiYuBaoday21_lesson_packagemy_modulemain.py", line 3, in <module>
# #     import cal
# # ModuleNotFoundError: No module named 'cal'
# #
# # Process finished with exit code 1




'''
# ------------------------------------------------------------
# # 7、from 子目录 import 文件1
# # # from my_module import main
# # # 需要注意的是,引入的文件1中,包含其他的文件2,文件2与运行文件  同目录
# # # ===>>以下的实例是  不会  报错的!注意与上面区别
# ------------------------------------------------------------
# # #
#

文件目录结结
day21_lesson_package\test.py( 该运行文件 )
day21_lesson_package\my_modulemain.py
day21_lesson_package\cal.py

===>>>main.py内容
import cal
def run():
    print("here is run function:
",cal.add(3,5))
def only_main():
    print("here is only_main function, not other directory
")

===>>>cal.py   内容
def add(x,y):
    return x+y
def sub(x,y):
    return x-y


'''
#
# from my_module import main
# main.only_main()
# main.run()
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # here is only_main function, not other directory
# #
# # here is run function:
# #  8
# #
# # Process finished with exit code 0




'''
# 06模块的执行以及__name__
# 06模块的执行以及__name__
# 06模块的执行以及__name__
# ------------------------------------------------------------
# # 8、包的概念
# # # 包的概念:包是用来组织模块的!在pycharm建立的python包中,下面会自动生成一个__init()__文件
# # # 调用包就是执行包下的__init__.py文件
# # # 引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,view.py模块的
# # # 名字就变成了hello_django.app01.views,类似的,manage.py的模块名则是hello_django.manage。
# ------------------------------------------------------------
'''




'''
# ------------------------------------------------------------
# # 8.1、from 包1.包2.包3 import 被调用文件
# # # from web.web1.web3 import cal
# # # 从包中引入文件
# ------------------------------------------------------------
# #
#

目录结构:
当前目录/test.py(执行文件)
当前目录/web(包)/web1(包)/web3(包)/cal.py

===>>>cal.py内容
def add(x,y):
    return x+y
def sub(x,y):
    return x-y

'''
# from web.web1.web3 import cal
# print(cal.add(2,3))
#
# #
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # 5
# #
# # Process finished with exit code 0








'''

# ------------------------------------------------------------
# # 9、from 包1.包2.包3.被调用文件 import 函数名
# # # from web.web1.web3.cal import add
# # # 从包中引入文件
# ------------------------------------------------------------
# #
#

目录结构:
当前目录/test.py(执行文件)
当前目录/web(包)/web1(包)/web3(包)/cal.py

===>>>cal.py内容
def add(x,y):
    return x+y
def sub(x,y):
    return x-y

'''
# from web.web1.web3.cal import add
# print(add(2,3))
#
# #
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # 5
# #
# # Process finished with exit code 0






'''
# ------------------------------------------------------------
# # 10、from 包1.包2 import 包3
# # # from web.web1 import web3
# # # 不修改包3下的文件__init()__,从包中引入文件
# # # ===>>>注意:报错,原因是这种方式在不修改包3下的文件__init()__<<<===
# ------------------------------------------------------------
# #
#

目录结构:
当前目录/test.py(执行文件)
当前目录/web(包)/web1(包)/web3(包)/cal.py

===>>>cal.py内容
def add(x,y):
    return x+y
def sub(x,y):
    return x-y

'''

# from web.web1 import web3
# print(web3.cal.add(2,3))
#
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # Traceback (most recent call last):
# #   File "D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py", line 367, in <module>
# #     print(web3.cal.add(2,3))
# # AttributeError: module 'web.web1.web3' has no attribute 'cal'
# #
# # Process finished with exit code 1







'''
# ------------------------------------------------------------
# # 11、from 包1.包2 import 包3
# # # from web.web1 import web3
# # # ''修改''包3下的文件__init()__,从包中引入文件,添加内容如下:
# # # from . import cal
# ------------------------------------------------------------
# #
#

目录结构:
当前目录/test.py(执行文件)
当前目录/web(包)/web1(包)/web3(包)/cal.py


===>>>cal.py内容
def add(x,y):
    return x+y
def sub(x,y):
    return x-y

当前目录/web(包)/web1(包)/web3(包)/__init()__.py
===》__init()__内容:
from . import cal

'''
#
#
# from web.web1 import web3
# print(web3.cal.add(2,3))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # 5
# #
# # Process finished with exit code 0



'''
# ------------------------------------------------------------
# # 12、总结,关于包下的内容调用
# # # 推荐使用方式一与方式二
# # # 方式三不推荐
# # # 方式一:from 包1.包2.包3 import 被调用文件
# # # from web.web1.web3 import cal
# # #
# # # 方式二:from 包1.包2.包3.被调用文件 import 函数名
# # # from web.web1.web3.cal import add
# # #
# # # 方式三:from 包1.包2 import 包3
# # # from web.web1 import web3
# # # ''修改''包3下的文件__init()__
# ------------------------------------------------------------
'''





'''
# ------------------------------------------------------------
# # 13、__name__
# # # 注意区别执行文件下的 __name__ 是 __main__,而被调用文件下的__name__是一个路径
# ------------------------------------------------------------

目录结构:
当前目录/test.py(执行文件)
当前目录/web(包)/web1(包)/web3(包)/cal.py

===>>>cal.py内容
print("这个是web3目录下的__name__: ",__name__)  # 被调用时,打印是相对于执行文件下的路径
def add(x,y):
    return x+y
def sub(x,y):
    return x-y


'''
# from web.web1.web3 import cal
# print('test运行函数下:   ',__name__)
# print('web.web1.web3 下: ',cal.__name__)
# print('web.web1.web3 下add(3,4): ',cal.add(3,4))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # 这个是web3目录下的__name__:  web.web1.web3.cal
# # test运行函数下:    __main__
# # web.web1.web3 下:  web.web1.web3.cal
# # web.web1.web3 下add(3,4):  7
# #
# # Process finished with exit code 0


'''

# ------------------------------------------------------------
# # 14、if __name__ == "__main__":
# # # 只是执行该文件下才会使用
# # # 功能一:如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,
# # # 但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字
# # # 而不是__main__。
# # # 
# # # 功能二:调试代码的时候,在”if __name__ == '__main__'“中
# # # 加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题
# # # 的时候,直接执行该模块文件,调试代码能够正常运行!
# ------------------------------------------------------------


目录结构:
当前目录/test.py(执行文件)
当前目录/web(包)/web1(包)/web3(包)/cal.py

===>>>cal.py内容
print("这个是web3目录下的__name__: ",__name__)  # 被调用时,打印是相对于执行文件下的路径
def add(x,y):
    return x+y
def sub(x,y):
    return x-y
if __name__ == "__main__":              # 此处该cal被调用,这里是False,不执行
    print("这个是web3\cal文件!")
    print("sub(5,1): ",sub(5,1))
'''
# if __name__ == "__main__":
#     from web.web1.web3 import cal
#     print('web.web1.web3 下add(3,4): ',cal.add(3,4))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # web.web1.web3 下add(3,4):  7
# #
# # Process finished with exit code 0








# 08 time时间模块
# 08 time时间模块
# 08 time时间模块
'''
# ------------------------------------------------------------
# # 15、sleep
# # # Python time sleep() 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。
# ------------------------------------------------------------

'''
#
# import time
# print("start:")
# time.sleep(3)
# print("end!")
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # start:
# # end:
# #
# # Process finished with exit code 0


'''
# ------------------------------------------------------------
# # 16、time.time()
# # # 时间戳(timestamp) :
# # # 打印的时间是从1970.1.1     00:00凌晨开始算,多少秒
# # # 时间戳(timestamp) :         通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
# # # 我们运行“type(time.time())”,返回的是float类型。
# ------------------------------------------------------------
'''
#
# import time
# print("时间秒:",( (2018-1970)*365*24*60*60)  )
# print(time.time() )     # 1533436467.959069秒
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # 时间秒: 1513728000
# # 1533436567.1447423
# #
# # Process finished with exit code 0





'''
# ------------------------------------------------------------
# # 17、time.localtime()
# # # 当前的时间,是以我所在的时区进行计算的,其默认值为time.time()
# # # 元组(struct_time)   :         struct_time元组共有9个元素共九个元素:
# # # (年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
# # # 
# # # int tm_sec; /* 秒 – 取值区间为[0,59] */
# # # int tm_min; /* 分 - 取值区间为[0,59] */
# # # int tm_hour; /* 时 - 取值区间为[0,23] */
# # # int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
# # # int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
# # # int tm_year; /* 年份,其值等于实际年份减去1900 */
# # # int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
# # # int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
# # # int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的时候,tm_isdst为0;不了解情况时,tm_isdst()为负。
# ------------------------------------------------------------
'''
#
# import time
# print(time.localtime())
# print(time.localtime(time.time()))
# t = time.localtime()
# print(t.tm_year,t.tm_mon,t.tm_mday)
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # time.struct_time(tm_year=2018, tm_mon=8, tm_mday=5, tm_hour=10, tm_min=53, tm_sec=19, tm_wday=6, tm_yday=217, tm_isdst=0)
# # time.struct_time(tm_year=2018, tm_mon=8, tm_mday=5, tm_hour=10, tm_min=53, tm_sec=19, tm_wday=6, tm_yday=217, tm_isdst=0)
# # 2018 8 5
# #
# # Process finished with exit code 0










'''

# ------------------------------------------------------------
# # 18、time.gmtime()
# # # gmtime()方法是将一个时间戳转换为UTC时区。其默认值为time.time()
# # # 用法与localtime差不多,只是基准的时区不一样
# # # 元组(struct_time)   :         struct_time元组共有9个元素共九个元素:
# # # (年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
# ------------------------------------------------------------
'''
#
# import time
# print("time.localtime():
",time.localtime())
# print("time.gmtime():
 ",time.gmtime())
# print("time.gmtime(time.time()):
 ",time.gmtime(time.time()) )
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # time.localtime():
# #  time.struct_time(tm_year=2018, tm_mon=8, tm_mday=5, tm_hour=10, tm_min=54, tm_sec=26, tm_wday=6, tm_yday=217, tm_isdst=0)
# # time.gmtime():
# #   time.struct_time(tm_year=2018, tm_mon=8, tm_mday=5, tm_hour=2, tm_min=54, tm_sec=26, tm_wday=6, tm_yday=217, tm_isdst=0)
# # time.gmtime(time.time()):
# #   time.struct_time(tm_year=2018, tm_mon=8, tm_mday=5, tm_hour=2, tm_min=54, tm_sec=26, tm_wday=6, tm_yday=217, tm_isdst=0)
# #
# # Process finished with exit code 0






'''
# ------------------------------------------------------------
# # 19、time.mktime()
# # # 将一个struct_time转化为时间戳。
# ------------------------------------------------------------
'''
#
# import time
# print("time.mktime(time.localtime()):
",time.mktime(time.localtime()))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # time.mktime(time.localtime()):
# #  1533437792.0
# #
# # Process finished with exit code 0





'''
# ------------------------------------------------------------
# # 20、time.strftime()
# # # 把一个代表时间的元组或者struct_time(如由time.localtime()和
# # # time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。
# # # 如果元组中任何一个元素越界,ValueError的错误将会被抛出。
# ------------------------------------------------------------
'''
#
# import time
# print("%Y-%m-%d %X        ",time.strftime("%Y-%m-%d %X",time.localtime()))
# print("%Y-%m-%d %X        ",time.strftime("%Y-%m-%d %X"))
# print("%Y:  %m:  %d   %X  ",time.strftime("%Y:  %m:  %d   %X",time.localtime()))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # %Y-%m-%d %X          2018-08-05 11:04:25
# # %Y-%m-%d %X          2018-08-05 11:04:25
# # %Y:  %m:  %d   %X    2018:  08:  05   11:04:25
# #
# # Process finished with exit code 0




'''
# ------------------------------------------------------------
# # 21、time.strptime
# # # 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
# ------------------------------------------------------------

'''
#
# import time
# print( time.strptime("2018-08-05 11:04:25","%Y-%m-%d %X" ) )
# print( time.strptime("2018-08-05 11:04:25","%Y-%m-%d %X" ) )
# print( time.strptime("2018:  08:  05   11:04:25","%Y:  %m:  %d   %X") )
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # time.struct_time(tm_year=2018, tm_mon=8, tm_mday=5, tm_hour=11, tm_min=4, tm_sec=25, tm_wday=6, tm_yday=217, tm_isdst=-1)
# # time.struct_time(tm_year=2018, tm_mon=8, tm_mday=5, tm_hour=11, tm_min=4, tm_sec=25, tm_wday=6, tm_yday=217, tm_isdst=-1)
# # time.struct_time(tm_year=2018, tm_mon=8, tm_mday=5, tm_hour=11, tm_min=4, tm_sec=25, tm_wday=6, tm_yday=217, tm_isdst=-1)
# #
# # Process finished with exit code 0
# #



'''

# ------------------------------------------------------------
# # 22、time.asctime()
# # # asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:
# # # 'Sun Jun 20 23:21:05 1993'。
# # # 如果没有参数,将会将time.localtime()作为参数传入。
# ------------------------------------------------------------

'''
# import time
# print(time.asctime())
# print(time.asctime(time.localtime()))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # Sun Aug  5 11:14:31 2018
# # Sun Aug  5 11:14:31 2018
# #
# # Process finished with exit code 0







'''
# ------------------------------------------------------------
# # 23、time.ctime()
# # # 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为
# # # None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
# ------------------------------------------------------------
'''
# import time
# print(time.ctime())
# print(time.ctime(time.time()))
#
# D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# Sun Aug  5 11:18:40 2018
# Sun Aug  5 11:18:40 2018
# Sun Aug  5 11:18:40 2018
#
# Process finished with exit code 0






'''
# ------------------------------------------------------------
# # 24 、datetime
# # # 获取当前的时间
# ------------------------------------------------------------
'''
# import datetime
# print(datetime.datetime.now())

# D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# 2018-08-05 11:21:08.873272
#
# Process finished with exit code 0





# 09 random模块
# 09 random模块
# 09 random模块
'''

# ------------------------------------------------------------
# # 25、关于文件命名
# # # 自己定义的文件,不可与python自己已经自带的库重命,这个原则是与函数的命名是类似的
# # # 一旦自己的文件与python库中的重名,那么就会可能出现python库中的文件模块无法被调用
# ------------------------------------------------------------

'''




'''
# ------------------------------------------------------------
# # 26、random() 方法
# # # 返回随机生成的一个实数,它在[0,1)范围内。
# ------------------------------------------------------------
'''
#
#
# import random
# ret = random.random()
# print(ret)
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # 0.5055980648694552
# #
# # Process finished with exit code 0





'''
# ------------------------------------------------------------
# # 27、randint() 方法
# # # 语法为:      random.randint(a,b)
# # # 函数返回数字 N ,N 为 a 到 b 之间的数字(a <= N <= b),包含 a 和 b。
# ------------------------------------------------------------
'''
# import random
# ret1 = random.randint(1,5)
# print(random.randint(1,5),random.randint(1,5),
#       random.randint(1,5),random.randint(1,5),
#       random.randint(1,5),random.randint(1,5))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # 2 1 3 3 5 1
# #
# # Process finished with exit code 0




'''
# ------------------------------------------------------------
# # 28、randrange() 方法
# # # 语法为:      random.randrange ([start,] stop [,step])
# # # 参数
# # # start -- 指定范围内的开始值,包含在范围内。
# # # stop -- 指定范围内的结束值, 不包含  在范围内。
# # # step -- 指定递增基数。
# ------------------------------------------------------------

'''
# import random
# ret1 = random.randrange(1,5,)
# print(random.randrange(1,5),random.randrange(1,5),
#       random.randrange(1,5),random.randrange(1,5),
#       random.randrange(1,5),random.randrange(1,5))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # 3 4 4 1 4 2
# #
# # Process finished with exit code 0






'''

# ------------------------------------------------------------
# # 29、choice() 方法
# # # choice() 方法,对给定的括号内的内容进行选择,默认抽取一项,
# # # 返回一个列表,元组或字符串的随机项。
# # # random.choice(内容),内容可以是字符串,列表,但是不可以是集合、元组
# ------------------------------------------------------------

'''
# import random
# print(random.choice([1,'23',[4,5]]))#23
# print(random.choice([1,'23',[4,5]]))#23
# print( "choice('A String') : ", random.choice('A String') )

# D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# 23
# 23
# choice('A String') :  A
#
# Process finished with exit code 0





'''
# ------------------------------------------------------------
# # 30、sample() 方法
# # # sample() 方法,对给定的括号内的内容进行选择,根据给定决定抽取的不重复项数
# ------------------------------------------------------------

'''

# import random
# print(random.sample([1,'23',[4,5]],2))      # 抽取2项
# print(random.sample([1,'23',[4,5]],1))      # 抽取1项
# print(random.sample([1,'23',[4,5]],3))      # 抽取3项
#
# D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# ['23', [4, 5]]
# [1]
# ['23', [4, 5], 1]
#
# Process finished with exit code 0








'''
# ------------------------------------------------------------
# # 31、uniform() 方法
# # # uniform() 方法将随机生成下一个实数,它在 [x, y) 范围内。
# # # 注意:uniform()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
# ------------------------------------------------------------
'''
# import random
# print(random.uniform(1,3))
# print(random.uniform(1,3))
# print(random.uniform(1,3))
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # 2.883114382491064
# # 2.873907630119383
# # 2.136903515729406
# #
# # Process finished with exit code 0




'''
# ------------------------------------------------------------
# # 32、shuffle() 方法
# # # shuffle() 方法将序列的所有元素随机排序。
# # # 注意:uniform()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
# ------------------------------------------------------------

'''
# import random
# item = [1,3,5,4,6,7,2]
# random.shuffle(item)
# print(item)
#
# random.shuffle(item)
# print(item)
#
# # D:Anaconda3python.exe D:/C_cache/py/day21_time_random_ChangYongMoKuaiYuBao/day21_lesson_package/test.py
# # [4, 3, 5, 2, 1, 7, 6]
# # [7, 3, 1, 2, 4, 6, 5]
# #
# # Process finished with exit code 0




'''

# ------------------------------------------------------------
# # 33、实例应用:生成验证码
# ------------------------------------------------------------

'''

#
# import random
# def identifying_code():
#     code =''
#     for i in range(1,5):
#         num = random.randint(0,9)
#         alf_small = chr( random.randint(65,90))
#         alf_large = chr(random.randint(97, 122))
#         s = str( random.choice( [num,alf_small,alf_large] )  )
#         code += s
#     return code
# print(identifying_code())
原文地址:https://www.cnblogs.com/jyfootprint/p/9426117.html