python学习旅程笔记5-模块

模块

 

一.简介

模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。

 

例如:

 

[python]  view plain copy
  1. #!/usr/bin/python  
  2. # Filename: using_sys.py  
  3.   
  4. import sys  
  5.   
  6. print 'The command line arguments are:'  
  7. for i in sys.argv:  
  8.     print i  
  9.   
  10. print '/n/nThe PYTHONPATH is', sys.path, '/n'   

输出为:

 

[python]  view plain copy
  1. $ python using_sys.py we are arguments  
  2. The command line arguments are:  
  3. using_sys.py  
  4. we  
  5. are  
  6. arguments  
  7.   
  8.   
  9. The PYTHONPATH is ['/home/swaroop/byte/code''/usr/lib/python23.zip',  
  10. '/usr/lib/python2.3''/usr/lib/python2.3/plat-linux2',  
  11. '/usr/lib/python2.3/lib-tk''/usr/lib/python2.3/lib-dynload',  
  12. '/usr/lib/python2.3/site-packages''/usr/lib/python2.3/site-packages/gtk-2.0']  

 

 

二.字节编译的.pyc文件

输入一个模块相对来说是一个比较费时的事情,所以Python做了一些技巧,以便使输入模块更加快一些。一种方法是创建字节编译的文件,这些文件以.pyc作为扩展名。字节编译的文件与Python变换程序的中间状态有关。当你在下次从别的程序输入这个模块的时候,.pyc文件是十分有用的——它会快得多,因为一部分输入模块所需的处理已经完成了。另外,这些字节编译的文件也是与平台无关的。

 

三.from..import语句

如果你想要直接输入argv变量到你的程序中,那么你可以使用from sys import argv语句。如果你想要输入所有sys模块使用的名字,那么你可以使用from sys import *语句。这对于所有模块都适用。一般说来,应该避免使用from..import而使用import语句,因为这样可以使你的程序更加易读,也可以避免名称的冲突。

 

四.模块的__name__

每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。,当一个模块被第一次输入的时候,这个模块的主块将被运行。假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,关于这点,这可以通过模块的__name__属性完成。

[python]  view plain copy
  1. #!/usr/bin/python  
  2. # Filename: using_name.py  
  3.   
  4. if __name__ == '__main__':  
  5.     print 'This program is being run by itself'  
  6. else:  
  7.     print 'I am being imported from another module'   

 

输出为:

[python]  view plain copy
  1. $ python using_name.py  
  2. This program is being run by itself  
  3.   
  4. $ python  
  5. >>> import using_name  
  6. I am being imported from another module  
  7. >>>   

每个Python模块都有它的__name__,如果它是'__main__',这说明这个模块被用户单独运行,我们可以进行相应的恰当操作。

 

五.自己创作模块

例如:

写一个module

[python]  view plain copy
  1. #!/usr/bin/python  
  2. # Filename: mymodule.py  
  3.   
  4. def sayhi():  
  5.     print 'Hi, this is mymodule speaking.'  
  6.   
  7. version = '0.1'  
  8.   
  9. # End of mymodule.py   

进行使用

 

[python]  view plain copy
  1. #!/usr/bin/python  
  2. # Filename: mymodule_demo.py  
  3.   
  4. import mymodule  
  5.   
  6. mymodule.sayhi()  
  7. print 'Version', mymodule.version   

 

输出为:

 

[python]  view plain copy
  1. $ python mymodule_demo.py  
  2. Hi, this is mymodule speaking.  
  3. Version 0.1   

 

在这里也可以使用from..import来进行调用

例如:

[python]  view plain copy
  1. #!/usr/bin/python  
  2. # Filename: mymodule_demo2.py  
  3.   
  4. from mymodule import sayhi, version  
  5. # Alternative:  
  6. # from mymodule import *  
  7.   
  8. sayhi()  
  9. print 'Version', version   

输出相同.

 

六.dir()函数

 

你可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。

例如:

[python]  view plain copy
  1. $ python  
  2. >>> import sys  
  3. >>> dir(sys) # get list of attributes for sys module  
  4. ['__displayhook__''__doc__''__excepthook__''__name__''__stderr__',  
  5. '__stdin__''__stdout__''_getframe''api_version''argv',  
  6. 'builtin_module_names''byteorder''call_tracing''callstats',  
  7. 'copyright''displayhook''exc_clear''exc_info''exc_type',  
  8. 'excepthook''exec_prefix''executable''exit''getcheckinterval',  
  9. 'getdefaultencoding''getdlopenflags''getfilesystemencoding',  
  10. 'getrecursionlimit''getrefcount''hexversion''maxint''maxunicode',  
  11. 'meta_path','modules''path''path_hooks''path_importer_cache',  
  12. 'platform''prefix''ps1''ps2''setcheckinterval''setdlopenflags',  
  13. 'setprofile''setrecursionlimit''settrace''stderr''stdin''stdout',  
  14. 'version''version_info''warnoptions']  
  15. >>> dir() # get list of attributes for current module  
  16. ['__builtins__''__doc__''__name__''sys']  
  17. >>>  
  18. >>> a = 5 # create a new variable 'a'  
  19. >>> dir()  
  20. ['__builtins__''__doc__''__name__''a''sys']  
  21. >>>  
  22. >>> del a # delete/remove a name  
  23. >>>  
  24. >>> dir()  
  25. ['__builtins__''__doc__''__name__''sys']  
  26. >>>   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值