什么是模块
(1)模块是从逻辑上组织python代码的形式
(2)当代码量变的相当大的时候,最好把代码分成一些有组织的代码段,前提是保证它们的彼此交互
(3)这些代码段之间有一定的联系,可能是一个包含数据成员和方法的类,也可能是一组相关但彼此独立的操作函数
(4)模块名不能乱起,字母数字下划线组成,首字母不能是数字
导入模块
(1)使用import导入模块,模块被导入后,程序会自动生成pyc的字节码文件以提升性能
(2)模块属性通过“模块名.属性”的方法调用,如果仅需要模块中的某些属性,也可以单独导入
(3)模块有一个__name__特殊属性,当模块文件直接执行时,__name__的值为"__main__",当
模块被另一个文件导入时,__name__的值就是该模块的名字
>>> import sys //导入sys模块
>>> import os,string //一次导入两个模块,os,string模块
>>> string.digits //调用模块中的方法
‘0123456789‘
>>> from random import randint //只导入random模块中的randint函数
>>> randint(1,10) //使用randint函数
2 //输出结果
模块加载
(1)一个模块只被加载 一次,无论它被导入多少次
(2)只加载一次可以阻止多重导入代码时被多次执行
(3)如果两个文件相互导入,防止了无限的相互加载
(4)模块加载时,顶层代码会自动执行,所以只将函数放入模块的顶层是良好的编程习惯
if __name__ = "__main__":
执行语句 //可以是一些测试语句,测试函数的功能
这样就可以避免导入模块的时候“执行语句”,基本写程序都会采用这样的结构
>>> import string
>>> import tab //导入tab模块,这样就可以实现自动补齐
>>> string.lowercase //调用string模块,产生小写字母
‘abcdefghijklmnopqrstuvwxyz‘
>>> string.uppercase //调用string模块,产生大写字母
‘ABCDEFGHIJKLMNOPQRSTUVWXYZ‘
>>> string.letters //调用string模块,产生字母
‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘
>>> string.digits //调用string模块的digits属性,产生数字
‘0123456789‘
>>> string.__file__ //可以查看string模块的源码
‘/usr/lib64/python2.6/string.pyc //完整路径为去掉结尾 c以后的路径
脚本实例
需要生成用户指定位数的随机密码
#!/usr/bin/env python
import string //导入string模块,用于生成字符串
import random //导入random模块,用于随机取一个字符
import sys //导入sys,用于取位置参数
num = int(sys.argv[1]) //传递位置参数,并将字符类型转换为整型
all_chs = string.digits + string.letters //将字母和数字组成的字符串赋值给all_chs
def mkpasswd(num): //定义一个生成密码的函数
pwd = "" //变量赋空值
for i in range(num): //循环执行
pwd += random.choice(all_chs) //直接拼接随机生成的字符串
return pwd //返回pwd
if __name__ == "__main__": //用于测试的代码,也可以用本程序输出要生成的密码
print mkpasswd(num)
sys.argv 这个模块是用来存程序名和参数 argv(0)是程序名,argv(1)是第一个参数
以写代学:python 模块简介&输出用户指定位数密码的脚本