python标准库模块教程_python基础教程总结9——模块,包,标准库

1. 模块

在python中一个文件可以被看成一个独立模块,而包对应着文件夹,模块把python代码分成一些有组织的代码段,通过导入的方式实现代码重用。

1.1 模块搜索路径

导入模块时,是按照sys.path变量的值搜索模块,sys.path的值是包含每一个独立路径的列表,包含当前目录、python安装目录、PYTHONPATH环境变量,搜索顺序按照路径在列表中的顺序(一般当前目录优先级最高)。

1 >>>import sys2 >>>sys.path3 [‘‘, ‘E:\\Python27\\Lib\\idlelib‘, ‘C:\\windows\\system32\\python27.zip‘, ‘E:\\Python27\\DLLs‘, ‘E:\\Python27\\lib‘, ‘E:\\Python27\\lib\\plat-win‘, ‘E:\\Python27\\lib\\lib-tk‘, ‘E:\\Python27‘, ‘E:\\Python27\\lib\\site-packages‘]

1.2 导入模块

1.2.1 使用import语句导入模块

有下面两种方式

import module1

import module2

import module3

import module1,module2,module3

这两种方式的效果是一样的,但是第一种可读性比第二种好,推荐按照下面的顺序导入模块,并且一般在文件首部导入所有的模块

python标准库

第三方模块

应用程序自定义模块

也可以在函数内部导入模块,这样被导入的模块作用域是局部的

1.2.2 使用from-import语句导入模块的属性

单行导入

1 from module import name1,name2,name3

多行导入

from module import name1,name2, name3

导入全部属性(由于容易覆盖当前名称空间中现有的名字,所以一般不推荐使用,适合模块中变量名很长并且变量很多的情况)

1 from module import *

如果你不想某个模块的属性被以上方法导入,可以给该属性名称前加一个下划线(_test),如果需要取消隐藏,可以显示的导入该属性(from module import _test)

1.2.3 扩展的import语句

使用自定义的名称替换模块的原始名称

import simplejson as json

模块被导入时,加载的时候模块顶层代码会被执行,如:设定全局变量、类和函数的声明等,所以应该把代码尽量封装到类和函数中。一个模块无论被导入多少次,只加载一次,可以防止多次导入时代码被多次执行。

1.2.4 重新导入模块reroad

1)import

import作用:导入/引入一个python标准模块,其中包括.py文件、带有__init__.py文件的目录。

import module_name[,module1,...]

from module import *|child[,child1,...]

说明:多次重复使用import语句时,不会重新加载被指定的模块,只是把对该模块的内存地址给引用到本地变量环境。

a.py

#!/usr/bin/env python

#encoding: utf-8

import os

print ‘in a‘,id(os)

m.py

#!/usr/bin/env python

#encoding: utf-8

import a #第一次会打印a里面的语句

import os #再次导入os后,其内存地址和a里面的是一样的,因此这里只是对os的本地引用

print ‘in c‘,id(os)

import a #第二次不会打印a里面的语句,因为没有重新加载

#结果

in a 23124144

in c 23124144

2)reroad

作用:对已经加载的模块进行重新加载,一般用于原模块有变化等特殊情况,reload前该模块必须已经import过。

import os

reload(os)

说明:reload会重新加载已加载的模块,但原来已经使用的实例还是会使用旧的模块,而新生产的实例会使用新的模块;

reload后还是用原来的内存地址;

不能支持from。。import。。格式的模块进行重新加载。

1 a.py2 #!/usr/bin/env python3 #encoding: utf-8

4 import os5 print ‘in a‘,id(os)6

7 m.py8 #!/usr/bin/env python9 #encoding: utf-8

10 import a #第一次import会打印a里面的语句11 print id(a) #原来a的内存地址12 reload(a) #第二次reload还会打印a里面的语句,因为有重新加载13 print id(a) #reload后a的内存地址,和原来一样

#结果

>>>

in a 23058608

29617680

in a 23058608

29617680

>>>

2. 包

包是另外一种模块,可以包含其他模块;

模块存储在文件中时(拓展名.py),包就是模块所在的目录;

包必须包括一个__init__.py的文件(模块),若将其作为普通模块导入文件内容就是包的内容

#名为constants的包,文件constants/__init__.py包括语句PI=3.14

import constants

print constants.PI

为了将模块放置在包内,直接把模块放在包目录内即可:

2880e6a12d22b92f51926c634c3c199d.png

51d727f611f86c1d1d50b9ab7bd7005b.png

3. 指定python文件编码方式

python默认是使用ASCII编码,可以指定编码方式,如

或者

4. 解决导入循环问题

有下面两个模块,a.py和b.py

a.py

在这里a尝试导入b,而b也尝试导入a,导入一个先前没有完全导入的模块,会导致导入失败。解决办法:移除一个导入语句,把导入语句放到函数内部,在需要的时候导入。

b.py

5. 使用技巧

创建一个目录python_apps,编辑~/.bashrc,设定环境变量PYTHONPATH的值为该目录的路径。

然后在python_apps目录下做一个软链接至应用的目录,假如要运行的应用路径为:/home/zhoujh/python_workspace/app

这样以后添加新的应用,只需在该目录下创建一个链接就行。

原文:http://www.cnblogs.com/zxqstrong/p/4666646.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值