python的强大之处在于它有很多的模块和方法
比如 string os sys 模块
模块是Python组织代码的基本方式。
一个Python脚本可以单独运行,也可以导入到另一个脚本中运行,当脚本被导入运行时,我们将其称为模块(module)。
所有的.py文件都可以作为一个模块导入
模块名与脚本的文件名相同
例如我们编写了一个名为hello.py的脚本,则可以在另一个脚本中用import hello语句来导入它。
包
Python的模块可以按目录组织为包
创建一个包的步骤:
- 创建一个名字为包名的目录
- 在该目录下创建一个init.py文件(必须有这样一个文件,python才会把它识别成是一个包)
- 根据需要,在该目录下存放脚本文件或已编译的扩展及子包
- import pack.m1, pack.m2, pack.m3 import 包名.模块名
import sys
sys.path 显示所有python会搜索的模块路径
['',
'/usr/bin',
'/usr/lib64/python27.zip',
'/usr/lib64/python2.7',
'/usr/lib64/python2.7/plat-linux2',
'/usr/lib64/python2.7/lib-tk',
'/usr/lib64/python2.7/lib-old',
'/usr/lib64/python2.7/lib-dynload',
'/usr/lib64/python2.7/site-packages',
'/usr/lib/python2.7/site-packages',
'/usr/lib/python2.7/site-packages/IPython/extensions']
如果模块不存在 则抛出异常
大部分模块都是在/usr/lib64/python2.7目录下
也可以自定义python path 比如想把 /root/library 加入进来 则可以sys.path.append('/root/library') 或者修改.bashrc文件 export PYTHONPATH
自己写的.py脚本也可以当成模块来导入
统计一个文件有多少字符,多少单词,多少行的模块
1.py文件
#!/usr/bin/python
def wordCount(s):
chars = len(s)
words = len(s.split())
lines = s.count('\n') 这样统计比较好
#lines = len(s.split('\n')) 这样统计会多统计一行
print lines,words,chars
s=open('/etc/passwd','r').read()
wordCount(s)
import 导入的脚本名不能以数字开头
如果新的脚本导入模块,默认找的是当前目录下的模块 并产生一个.pyc被编译过的模块
调用模块中的函数 使用 模块名.函数名(参数) 来调用
问题:确保调用模块的时候避免执行模块内的本身的输出,而只执行调用者自己的输出
则需要 在模块中做一个判断 if name == 'main'
#!/usr/bin/python
def wordCount(s):
chars = len(s)
words = len(s.split())
lines = s.count('\n') 这样统计比较好
#lines = len(s.split('\n')) 这样统计会多统计一行
print lines,words,chars
if name=='main'
s=open('/etc/passwd','r').read()
wordCount(s)
模块是一个可以导入的Python脚本文件;
包是一些按目录组织的模块和子包,目录下有init.py文件,此文件可以存放包的信息;
导入模块和包的语法:
- import , import as as可以在导入的时候给它起个新名字 import wc as 新名字
- from … import … 比如 from 包名 import 模块名 或者 import 包名.模块名 或者 包名.模块名.函数名 都可以