python---模块与包
#############################
########## 模块与包 ##########
#############################
1.什么是模块
在 Python 中,一个.py文件就称之为一个模块(Module)。
模块的优点:
- 大大提高了代码的可维护性;
- 编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用
2.导入模块的几种方式:
cacl.py:
def add(x,y):
return x + y
def jian(x,y):
return x - y
def multi(x,y):
return x*y
def divi(x,y):
return x/y
cacl = {cacl里面的所有代码进行解释}
import cacl
print cacl.add(18,2)
2) from cacl import add
调用方式:导入cacl模块里面的add,方法:add(1,2)
只把add解释执行放入当前py文件中
from cacl import add
print add(18,2)
3) from cacl import add as myadd
myadd = add
调用方式:如果当前py代码包含add方法,但仍然想要使用cacl模块中的add函数,可以对该函数进行重命名;
from cacl import add as myadd
def add(x,y):
return x+y+1
print myadd(18,2)
4) from cacl import jian,multi
调用方式:导入cacl模块里面的多个方法
from cacl import jian,multi
def add(x,y):
return x+y+1
print jian(18,2)
print multi(3,6)
3.模块搜索路径
- 当我们试图加载一个模块时,Python 会在指定的路径下搜索对应的.py 文件;
- 默认情况下,Python 解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在 sys 模块的 path 变量中;
sys.path
Out[8]:
['/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/lib64/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages',
'/usr/lib/python2.7/site-packages/IPython/extensions',
'/home/kiosk/PycharmProjects/untitled']
sys.path.append('/home/kiosk/Desktop/pycharm-community-2017.1.4/helpers/pydev')
sys.path
Out[10]:
['/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/lib64/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages',
'/usr/lib/python2.7/site-packages/IPython/extensions',
'/home/kiosk/PycharmProjects/untitled',
'/home/kiosk/Desktop/pycharm-community-2017.1.4/helpers/pydev']
2)开源模块(BeautifulSoup,flask,django , css,html,bootstrap,node.js)
3)自定义模块
5.包
创建包的步骤:
创建一目录为包名;
在该文件夹下创建__init__.py文件存放包的信息,该文件可以为空;
根据需要存放脚本文件,已编译的扩展及子包;
可以用import,import as,from import等语句导入模块和包;
def add(x,y):
return x + y
def jian(x,y):
return x - y
def multi(x,y):
return x*y
def divi(x,y):
return x/y
if __name__ == "__main__": # 当__name__出现,调用包时,不打印包中自带的输出语句
########## 模块与包 ##########
#############################
1.什么是模块
在 Python 中,一个.py文件就称之为一个模块(Module)。
模块的优点:
- 大大提高了代码的可维护性;
- 编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用
2.导入模块的几种方式:
cacl.py:
def add(x,y):
return x + y
def jian(x,y):
return x - y
def multi(x,y):
return x*y
def divi(x,y):
return x/y
1) import cacl
调用方式:直接导入cacl模块,方法:cacl.add(1,3)cacl = {cacl里面的所有代码进行解释}
import cacl
print cacl.add(18,2)
2) from cacl import add
调用方式:导入cacl模块里面的add,方法:add(1,2)
只把add解释执行放入当前py文件中
from cacl import add
print add(18,2)
3) from cacl import add as myadd
myadd = add
调用方式:如果当前py代码包含add方法,但仍然想要使用cacl模块中的add函数,可以对该函数进行重命名;
from cacl import add as myadd
def add(x,y):
return x+y+1
print myadd(18,2)
4) from cacl import jian,multi
调用方式:导入cacl模块里面的多个方法
from cacl import jian,multi
def add(x,y):
return x+y+1
print jian(18,2)
print multi(3,6)
3.模块搜索路径
- 当我们试图加载一个模块时,Python 会在指定的路径下搜索对应的.py 文件;
- 默认情况下,Python 解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在 sys 模块的 path 变量中;
sys.path
Out[8]:
['/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/lib64/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages',
'/usr/lib/python2.7/site-packages/IPython/extensions',
'/home/kiosk/PycharmProjects/untitled']
sys.path.append('/home/kiosk/Desktop/pycharm-community-2017.1.4/helpers/pydev')
sys.path
Out[10]:
['/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/lib64/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages',
'/usr/lib/python2.7/site-packages/IPython/extensions',
'/home/kiosk/PycharmProjects/untitled',
'/home/kiosk/Desktop/pycharm-community-2017.1.4/helpers/pydev']
4.模块的分类
1)内置模块(os,sys,dnspython,socket,time,excel)2)开源模块(BeautifulSoup,flask,django , css,html,bootstrap,node.js)
3)自定义模块
5.包
创建包的步骤:
创建一目录为包名;
在该文件夹下创建__init__.py文件存放包的信息,该文件可以为空;
根据需要存放脚本文件,已编译的扩展及子包;
可以用import,import as,from import等语句导入模块和包;
6.作用域
在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在 Python 中,是通过 _ 前缀来实现。比如__author__ , __name__就是特殊变量的,__func__,__fun为私有函数,不能直接引用。def add(x,y):
return x + y
def jian(x,y):
return x - y
def multi(x,y):
return x*y
def divi(x,y):
return x/y
if __name__ == "__main__": # 当__name__出现,调用包时,不打印包中自带的输出语句
print divi(9,2)