Chinaunix首页 | 论坛 | 博客
  • 博客访问: 825834
  • 博文数量: 91
  • 博客积分: 2544
  • 博客等级: 少校
  • 技术积分: 1885
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-12 09:08
文章存档

2016年(10)

2014年(2)

2013年(4)

2012年(23)

2011年(23)

2010年(13)

2009年(14)

2007年(2)

分类: Python/Ruby

2012-03-03 17:54:17

python基础要点(4)-模块
 
.模块的命名
#模块的文件名就是模块的名字加上.py
创建一个模块:test.py
使用这个模块:import test
 
.模块的命名空间
#给定一个模块名后就只能有一个模块被导入到Python解释器中,所以不同模块间不会出现命名交叉。
#即使不同模块间有相同的函数名也不会产生冲突,例:test.add(),test1.add() 不会产生冲突
 
.如何搜索模块
(1)当导入一个模块时,会在路径中搜索该模块,即在文件系统预定的路径下查找模块。
(2)默认的搜索路径是在安装python时设定的,它可以在一个或两个地方修改。
(3)制定搜索模块的路径设定是在:PYTHONPATH环境变量或在python的shell中
(4)sys.path存放了可搜索模块的所有路径,该变量可以通过函数修改,也可以通过交互式工具修改
(5)sys.path.append(mymodule_dir)  可以添加自己模块的位置
 
.命名空间
(1)命名空间是名称(标识符)到对象的映射
(2)在执行期间有两到三个命名空间:局部命名空间,全局命名空间,内建命名空间
(3)python解释器先加载内建命名空间,它由__builtins__模块中的名字构成,然后是执行模块的全局命名空间,若在执行期间还要调用函数,就出现第三个命名空间:局部命名空间。
(4)
 
 
.导入模块
(1)一个模块只被加载一次,无论它被导入多少次。
 
基本语法:
import module1
...
import moduleN
import module1,...,moduleN
 
.导入模块的顺序
import 系统模块
import 第三方模块
import 自定义模块
 
.from-import 语句
#可以在模块里导入制定模块的属性
#这种语法把模块的名称导入到当前模块的命名空间,就可以不用module.fun()来使用变量了。
 
from module import name1,...,nameN
也可以
from module import *  # 不推荐
 
.当导入的模块中的全局变量和当前模块的变量名相同时
# 此时被导入模块的变量名会覆盖当前模块的变量名
# 变量只影响局部命名空间,而不会改变导入模块的变量
 
   1 # imptee.py #
  2 #############
  3 foo = 'abc'
  4 def show():
  5     print 'foo from imptee:', foo
  6
  7 #############
  8 # impter.py #
  9 #############
 10 from imptee import foo, show
 11 
 12 show()
 13 foo = 123
 14 print 'foo from impter:', foo
 16 show()
 
输出:
foo from imptee: abc
foo from impter: 123
foo from imptee: abc            
 
要解决这个问题,唯一的办法是,把调用的函数前面加上模块的名称:
show()改成imptee.show()

 
 
 
阅读(1314) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~