《PYTHON学习教程资源:使用模块知识点学习讲解(含代码练习题).docx》由会员分享,可在线阅读,更多相关《PYTHON学习教程资源:使用模块知识点学习讲解(含代码练习题).docx(5页珍藏版)》请在第一文库网上搜索。
1、PYTHoN学习教程资源:使用模块PythOn本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。我们以内建的SyS模块为例,编写一个he11o的模块:U!usrbin/envPython3#-*-coding:utf-8-*atestmodu1e_author_=,Michae11iao,importsysdeftest():args=sys.argvifIen(args)=1:print(,He11o,wor1d!,)e1ifIen(args)=2:print(,He11o,%s!%args1)e1se:print(,Toomanyarguments!,)if_name_
2、=_main_,:test()第1行和第2行是标准注释,第1行注释可以让这个he11o.py文件直接在ix1inuxMac上运行,第2行注释表示.py文件本身使用标准UTF-8编码;第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;第6行使用_author_变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名;以上就是Python模块的标准文件模板,当然也可以全部删掉不写,但是,按标准办事肯定没错。后面开始就是真正的代码部分。你可能注意到了,使用SyS模块的第一步,就是导入该模块:importsys导入SyS模块后,我们就有了变量SyS指向该模块
3、,利用sys这个变量,就可以访问sys模块的所有功能。SyS模块有一个argv变量,用IiSt存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称,例如:运行python3he11o.py获得的sys.argv就是,he11o.py,;运行python3he11o.pyMiChaeI获得的sys.argv就是,he11o.py,Michae1,最后,注意到这两行代码:if_name_=,_main_:test()当我们在命令行运行he11o模块文件时,Python解释器把一个特殊变量_name_置为而如果在其他地方导入该he11。模块时,if判断将失败,因此,
4、这种遥测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。我们可以用命令行运行he11o.py看看效果:$Python3he11o,pyHe11o,wor1d!$pythonhe11o,pyMichae1He11o,Michae1!如果启动Python交互环境,再导入he11o模块:$python3Python3.4.3(v3.4.3:9b73f1c3e601,Feb232015,02:52:03)GCC4.2.1(App1eInc.bui1d5666)(dot3)ondarwinTypehe1p,“copyright,creditsor1icenseformorein
5、formation.importhe11o导入时,没有打印He11o,word!,因为没有执行test()函数。调用he11o.test()时,才能打印出He11ojword!:he11o,test()He11o,wor1d!作用域在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过一前缀来实现的。正常的函数和变量名是公开的(PUbiic),可以被直接引用,比如:abc,x123,P工等;类似_xxx_这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的_author,_name_就是特殊
6、变量,he11o模块定义的文档注释也可以用特殊变量_doc_访问,我们自己的变量一般不要用这种变量名;类似_xxx和_xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,_abc等;之所以我们说,private函数和变量“不应该被直接引用,而不是不能”被直接引用,是因为Python并没有一种方法可以完全限制访问PriVate函数或变量,但是,从编程习惯上不应该引用private函数或变量。private函数或变量不应该被别人引用,那它们有什么用呢?请看例子:def_private_1(name):return,He11o,%s,%namedef_private_2(name):return,Hi,%s,%namedefgreeting(name):ifIen(name)3:return_private_1(name)e1se:returnprivate2(name)我们在模块里公开greeting。函数,而把内部逻辑用PriVate函数隐藏起来了,这样,调用greeting。函数不用关心内部的private函数细节,这也是一种非常有用的代码封装和抽象的方法,即:外部不需要引用的函数全部定义成PriVate,只有外部需要引用的函数才定义为pub1ico