Python模块--Python学习笔记三

本文介绍了Python模块的基础概念,包括模块的用途、如何创建和使用模块,以及如何通过sys模块进行参数处理和获取Python路径。同时,文章还讨论了模块的name属性,解释了如何在程序中区分主运行与被导入情况,并提供了创建、导入和使用模块的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

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

#!/usr/bin/python
#Filename:using_sys.py

import sys
print 'The command line anguments are :'
for i in sys.argv:
        print i
print '\n\nThePythonPath is',sys.path,'\n'

运行结果

[root@fengniu020 test]#  python using_sys.py we are argum ents
The command line anguments are :
using_sys.py
we
are
argum
ents


ThePythonPath is ['/hotdata/kehu/fotest_niufeecms/test', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-dynload', '/usr/lib64/python2.6/site-packages', '/usr/lib/python2.6/site-packages', '/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info'] 

解释:

当我们执行python using_sys.py we are arguments的时候,我们使用python命令运行using_sys.py模块,后面跟着的内容被作为参数传递给程序。Python为我们把它存储在sys.argv变量中。记住,脚本的名称总是sys.argv列表的第一个参数。所以,在这里,’using_sys.py’是sys.argv[0]、’we’是sys.argv[1]、’are’是sys.argv[2]以及’argum ents’是sys.argv[3]。注意,Python从0开始计数,而非从1开始。

模块的nam e

每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。这在一个场合特别有用
——就如前面所提到的,当一个模块被第一次输入的时候,这个模块的主块将被运行。假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,我们该怎么做呢?这可以通过模块的nam e属性完成。

#!/usr/bin/python
#Filename:using_name.py

if __name__ =='__main__':
        print 'This program is being run by itself'
else:
        print 'I am being imported from another module'

运行结果:

[root@fengniu020 test]#  python using_name.py 
This program is being run by itself
[root@fengniu020 test]# vim using_name.py
[root@fengniu020 test]# vim using_name.py
[root@fengniu020 test]# python
Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import using_name
I am being imported from another module
>>> 

每个Python模块都有它的nam e,如果它是’m ain‘,这说明这个模块被用户单独运行,
我们可以进行相应的恰当操作。

制造你自己的模块

如何创建你自己的模块

#!/usr/bin/python
#Filename:mymodule.py

def sayhi():
        print 'Hi,this is my module speaking'
version = '0.1'

上面是一个 模块 的例子。你已经看到,它与我们普通的Python程序相比并没有什么特别之
处。我们接下来将看看如何在我们别的Python程序中使用这个模块。
记住这个模块应该被放置在我们输入它的程序的同一个目录中,或者在sys.path所列目录之
一。

#!/usr/bin/python
#Filename:mymodule_demo.py

import mymodule
mymodule.sayhi()
print 'version',mymodule.version

输出

[root@fengniu020 test]# python mymodule_demo.py 
Hi,this is my module speaking
version 0.1

from ..import语句

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

#!/usr/bin/python
#Filename:mymodule_demo2.py

from mymodule import sayhi,version

sayhi()

print 'version',version

运行:

[root@fengniu020 test]# python mymodule_demo2.py 
Hi,this is my module speaking
version 0.1

dir()函数

你可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。
当你为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表。

[root@fengniu020 test]# python
Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']
>>> sys.version
'2.6.6 (r266:84292, Jan 22 2014, 09:42:36) \n[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)]'
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'sys']
>>> 
>>> a=5#create a new variable 'a'
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'a', 'sys']
>>> del a #delete a name
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'sys']
>>> 

它如何工作
首先,我们来看一下在输入的sys模块上使用dir。我们看到它包含一个庞大的属性列表。
接下来,我们不给dir函数传递参数而使用它——默认地,它返回当前模块的属性列表。注
意,输入的模块同样是列表的一部分。
为了观察dir的作用,我们定义一个新的变量a并且给它赋一个值,然后检验dir,我们观察到在列表中增加了以上相同的值。我们使用del语句删除当前模块中的变量/属性,这个变化再一次反映在dir的输出中。关于del的一点注释——这个语句在运行后被用来 删除 一个变量/名称。在这个例子中,del a,你将无法再使用变量a——它就好像从来没有存在过一样。
概括
模块的用处在于它能为你在别的程序中重用它提供的服务和功能。Python附带的标准库就是这样一组模块的例子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值