学习PYTHON 入门日志 (七)

1. 050609 模块和包

继续:模块和包 
28:模块
       模块就是一些函数和一些class的一个集合,放到一个*.py
       例如 sys 就是一个模块  import就是加载一个模块,dir显示出模块里面的
       变量成员

       >>> import sys
       >>> dir(sys)
       ['__doc__', '__name__', '__stderr__', '__stdin__', '__stdout__', 'argv',
       'builtin_module_names', 'copyright', 'dllhandle', 'exc_info',
'exc_type',
       'exec_prefix', 'executable', 'exit', 'getrefcount',
'hexversion', 'maxint',
       'modules', 'path', 'platform', 'prefix', 'ps1', 'ps2',
'setcheckinterval',
       'setprofile', 'settrace', 'stderr', 'stdin', 'stdout',
'version', 'winver']

       我会写
       文件 model_test.py ,但不知道     if __name__=="__main__":
       是什么意思

        """
        this is a module
        """
        one = "a attribute"

        def fun():
            return "haha"

        if __name__=="__main__":
            fun()

        >>> import model_test
        >>> fun
        <function fun at 0x00992E30>
        >>> fun()
        'haha'
        >>>
        >>> fun
        <function fun at 0x00992E70>
        >>> fun()
        'haha'
        >>> one
        'a attribute'
        >>> print __doc__

        this is a module

        >>>

        模块也是个对象可以赋值的,如
        >>> pp=model_test
        >>> pp.fun
        <function fun at 0x00992EF0>
        >>> pp.fun()
        'haha'

        要仔细体会Python 中 很多对象的概念
        模块的使用要注意name space的概念
        注意自己模块的名字不要和系统的名字一样

29:包
       包packge 是一组module 的集合。
        建立一个包的过程是这样的
        1:建立一个目录如 testpackage
        2:建立一个空文件 __int__.py (我不知道这个文件是做什么用的)
        3:把要打包的*.py文件复制到该目录下

        按照如下的方式访问就可以了
        >>> import testpackage.testmodule
        >>> testpackage.testmodule.sayHello()
        Hello

        包是一种防止名字冲突,我更喜欢叫,名字空间的污染
        同时包里面还可以打包 用来更方便的管理模块。

以上是Python 模块和包  下一篇将是Python 的name space

邹胖小 2005年6月8日 祝大家快乐安康   今天高考结束了

1.1. __name__ 技巧

这是一个运行的技巧。当此模块为主程序时,__name__的值为__main__,当模块被导入时,它的值是模块名。因此它可以用来对一些模块作测试,这样可以单独运行这些模块,则 
if __name__ == '__main__':就会执行。如果是被其它模块导入,则它不会执行。
  • 即可以通过这种方式在 文件中进行自测部分的开发;