分享

Python:模块代码编写要点

 java_laq小馆 2014-01-09

Python:模块代码编写基础

(2012-12-27 19:36:38)
标签:

python

模块

高级属性

it

分类: python

1 创建模块:定义模块用文本编辑器,以py为后缀保存。文件命名需遵循python命名规则。

2 模块使用:import / from

import:将整个模块对象赋值给一个变量名

from:将一个或者多个变量名赋值给另外一个模块中同名的对象,或者说深拷贝。

from module import name1,name2

<==>

import module

name1 = module.name1

name2 = module.name2

del module

两个模块有同名属性时,必须用import模块

M.py

def func():

    .......

N.py

def func():

    .......

import M,N

M.func()

N.func()

3 属性名的点号运算:层级对象访问控制符

4 重载模块:reload 函数会使已加载的模块代码重新载入并重新执行,模块中新的代码赋值语句会在适当的地方修改现有的模块对象。reload 是 Python 中的内置函数,不是语句,参数reload的是已经存在的模块对象,而不是变量名。

5 模块包

除模块名以外,导入也可以指定目录路径,python代码的目录就称为包,此类导入称为包导入。

导入包 import dir1.dir2.mod

      from dir1.dir2.mod import x

__init__.py包文件 包导入语句的路径内每个目录都必须有__init__.py这个文件,否则会导致包导入失败。负责包初始化,包首次读取时,会自动执行。

6 高级模块话题

在模块中隐藏数据,最小化from*的破坏。_x 指不被赋值的变量名x,__all__=[a,b,c]指要复制出的变量名。

b 混合用法模式:__name__ 和 __main__

 如果程序以顶层程序文件执行,启动时,__name__会被设置为字符串__main__

 如果文件被导入,__name__就会改设成客户端所了解的模块名

 可做单元测试

c 修改模块搜索路径

 import sys

 sys.path

 sys.path.append('dir') 

d import as 扩展 import module as name 等价于

  import module

  name = module

  del module

e 相对导入语法

  from 语句可以使用.作为相对路径来用。

  位于模块A.B.C

  from . import       #import A.B.D

  from ..F import     # import A.F.G

  from .. import E      #import A.E

f 模块设计理念:总在python模块内编写代码,模块耦合降低,最大化模块粘合性,模块应避免修改其他模块变量。

g 通过变量名字符串导入模块

 modname = "string"

 exec "import"+modname

h reload 不影响from导入,from还是使用最初的变量对象。reload没有传递性,如果reload一个模块,模块中导入另外的模块,另外的模块不会被reload。

来自:http://blog.sina.com.cn/s/blog_4ef2568301016lqv.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多