本节目录

  • 模块相关介绍

  • time

  • random

  • os

  • sys

  • json & pickle

  • shelve

  • xml

  • configparser

  • hashlib

  • subprocess

  • optparse

  • struct

  • 所述一些模块方法并不完善,只是简单性的学习,或有错误,敬请指正

  • 未完待续......

 为什么要有模块:

    在计算机程序的开发过程中,程序代码越写越多,在一个py文件中会越来越多,变得不容易维护

    为了编写易维护的代码,将很多函数分组,分别放入不同的py文件中,每个文件包含的代码就会相对减少,诸多编程语言都这样做

    在python中,一个.py文件中就可以称之为一个模块(moudle)

    使用模块有什么好处:大大提高了代码的可维护性,也可区分逻辑

    其次,在编写好一个模块,就可以在其它地方进行引用,不必从0开始

模块有三种:

  • python标准库
  • 第三方模块
  • 应用程序自定义模块  

模块的引用方式:

  1、import语句  1)执行对应文件  2)引入变量名

import time        # 导入时间模块    也可以同时导入多个模块,用逗号隔开

  2、from....import 模块名

from my_moudle import main

  3、from....import *

      引入一切,即导入模块中所有的项目,不推荐使用。因为引入的其它来源的命名,很可能覆盖了已有的定义。

  4、运行本质

#1 import test
#2 from test import add 

那么,python中是如何找到这些模块呢?

  sys.path,存放的是执行文件的搜索路径(环境变量)。然而模块就是通过环境变量去找的.

一个目录中带__iter__.py的文件成为包(package)

  1、用来组织模块  2、避免相同模块名的冲突

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

 

                           python基础之模块系列(一)

 

这里介绍一下__name__的属性

  一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。

if __name__ == '__main__':
   print('程序自身在运行')
else:
   print('我来自另一模块')

python using_name.py
程序自身在运行

import using_name
我来自另一模块

  说明: 每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。

time

   时间相关的操作,时间有三种表示方式:    

      时间戳               1970年1月1日之后的秒,即:time.time(),只有时间戳参数才能进行加减

      格式化的字符串    2014-11-11 11:11,    即:time.strftime('%Y-%m-%d')

      结构化时间          元组包含了:年、日、星期等... time.struct_time    即:time.localtime()

print time.time()
print time.mktime(time.localtime())
   
print time.gmtime()     #可加时间戳参数
print time.localtime()  #可加时间戳参数
print time.strptime('2014-11-11', '%Y-%m-%d')
   
print time.strftime('%Y-%m-%d') #默认当前时间
print time.strftime('%Y-%m-%d',time.localtime()) #默认当前时间
print time.asctime()
print time.asctime(time.localtime())
print time.ctime(time.time())
   
import 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
print datetime.datetime.now()
print datetime.datetime.now() - datetime.timedelta(days=5)

   python基础之模块系列(一)

random(随机模块)

import random                  
print(random.random())         # 0到1的随机浮点数
print(random.randint(1,3))     # 整形 闭区间 [1,3]
print(random.randrange(1,3))   # 整形,开区间 [1,3)
li = [11,22,33,44,55]
print(random.choice(li))       # 基于可迭代对象随机
print(random.sample(li,2))     # 随机选定多个
print(random.uniform(1,2))     # 任意范围的浮点型
random.shuffle(li)             # 随机打乱次序
print(li)

  通过随机模块可以制作一个随机验证码

 1 def v_code():  
 2     checkcode = "" # 定义一个空字符串
 3     for i in range(4): # 遍历四次
 4         num = random.randint(0,9) # 随机选择0到9的整形
 5         alf = chr(random.randint(65,90)) # 随机选择chr对应的字母
 6         add = random.choice([num,alf]) # 基于上面的可迭代对象选择一个
 7         checkcode += str(add) # 将它们变为字符串,加到空字符串里面
 8     return checkcode
 9 if __name__ == "__main__":
10     print(v_code())
随机验证码

相关文章: