Python论坛  - 讨论区

标题:[python-chinese] 老菜鸟 邹胖小 学习PYTHON 入门日志 (七)

2005年06月08日 星期三 21:04

Chao Zou chao.zou at gmail.com
Wed Jun 8 21:04:06 HKT 2005

继续:模块和包
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                     
         
         >>> fun()                   
         'haha'                      
         >>>                         
         >>> fun                     
         
         >>> fun()                   
         'haha'                      
         >>> one                     
         'a attribute'               
         >>> print __doc__           
                            
         this is a module            
                            
         >>> 
         
         模块也是个对象可以赋值的,如
         >>> pp=model_test           
         >>> pp.fun                                 
         
         >>> 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日 祝大家快乐安康   今天高考结束了

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月08日 星期三 23:02

limodou limodou at gmail.com
Wed Jun 8 23:02:30 HKT 2005

在 05-6-8,Chao Zou<chao.zou at gmail.com> 写道:
> 继续:模块和包
> 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__":

这是一个运行的技巧。当此模块为主程序时,__name__的值为__main__,当模块被导入时,它的值是模块名。因此它可以用来对一些模块作测试,这样可以单独运行这些模块,则
if __name__ == '__main__':就会执行。如果是被其它模块导入,则它不会执行。

>         是什么意思
> 
>          """
>          this is a module
>          """
>          one = "a attribute"
> 
>          def fun():
>              return "haha"
> 
>          if __name__=="__main__":
>              fun()
> 
>          >>> import model_test
>          >>> fun
>          
>          >>> fun()
>          'haha'
>          >>>
>          >>> fun
>          
>          >>> fun()
>          'haha'
>          >>> one
>          'a attribute'
>          >>> print __doc__
> 
>          this is a module
> 
>          >>>
> 
>          模块也是个对象可以赋值的,如
>          >>> pp=model_test
>          >>> pp.fun
>          
>          >>> pp.fun()
>          'haha'
> 
>          要仔细体会Python 中 很多对象的概念
>          模块的使用要注意name space的概念
>          注意自己模块的名字不要和系统的名字一样
> 
> 29:包
>         包packge 是一组module 的集合。
>          建立一个包的过程是这样的
>          1:建立一个目录如 testpackage
>          2:建立一个空文件 __int__.py (我不知道这个文件是做什么用的)

相当于类的构造方法。在__init__.py(上面写错了)中还可以导入模块,方法,变量,从而改变包的结构,有可能是为了方便起见,一般不用。

>          3:把要打包的*.py文件复制到该目录下
> 
>          按照如下的方式访问就可以了
>          >>> import testpackage.testmodule
>          >>> testpackage.testmodule.sayHello()
>          Hello
> 
>          包是一种防止名字冲突,我更喜欢叫,名字空间的污染
>          同时包里面还可以打包 用来更方便的管理模块。
> 
>  以上是Python 模块和包  下一篇将是Python 的name space
> 
>  邹胖小 2005年6月8日 祝大家快乐安康   今天高考结束了
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月08日 星期三 23:31

Qiangning Hong hongqn at gmail.com
Wed Jun 8 23:31:31 HKT 2005

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

dir返回一个对象的属性列表,模块也只不过是一个对象而已,你可以用dir(0)获
得0这个对象都有些什么属性。

[...]

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

当一个模块被直接执行(python model.py)时,__name__为"__main__";如果是
使用import语句导入的话,__name__为模块名。(你可以理解成主模块的名字叫
"__main__")。因此,if __name__ == "__main__"下的子句仅仅在直接执行本模
块的情况下才会被执行,import时则忽略之。

[...]

> 29:包
>         包packge 是一组module 的集合。 
>          建立一个包的过程是这样的
>          1:建立一个目录如 testpackage
>          2:建立一个空文件 __int__.py (我不知道这个文件是做什么用的)

目录下必须有__init__.py文件才成为包。包被import时会自动执行__init__.py。

[...]

-- 
Qiangning Hong

 ______________________________________________
( Kaufman's First Law of Party Physics:        )
(                                              )
( Population density is inversely proportional )
(                                              )
( to the square of the distance from the keg.  )
 ----------------------------------------------
     o
      o
        ,__, |    |
        (oo)\|    |___
        (__)\|    |   )\_
             |    |_w |  \
             |    |  ||   *

             Cower....

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号