设为首页 收藏本站
查看: 6715|回复: 0

[经验分享] Python学习日志之Python模块

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-24 08:32:55 | 显示全部楼层 |阅读模式
Python入门学习笔记之Python模块
Python模块:
一、认识Python模块
1.什么是模块
    函数是可以实现一项或多项功能的一段程序。我们的模块是函数功能的扩展,模块是可以实现一项或多项功能的程序块。从定义可以看出:函数是一段程序,模块是一项程序块,也就是说函数,模块都是用来实现功能的,但是模块范围要广,在模块里可以重用多个函数

2.如何导入模块
    在Python程序中如果要使用某个模块,不能直接使用某个模块的功能。在模块使用之前,我们需要先导入指定模块,只要导入模块后我们才能使用
1
2
3
4
>>> import math
>>> math.pi
3.141592653589793
>>>




3.sys系统自带模块
    在Python中有一些模块是不用我们去定义的,Python官方提供的自带的模块。这些模块伴随这Python的安装而产生,我们把这些模块叫做标准库模块。标准库模块是一类模块,而不是一种模块,在标准库模块中,也有非常多的模块,有的模块和电子邮件相关,有的和操作系统相关,还有的和系统功能相关,我们把标准库中和系统相关的这些模块称为sys模块
#实例:
1
2
3
4
5
6
7
>>> import sys
>>> sys.version
'2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)]'
>>> sys.executable
'D:\\Python27\\Python279\\pythonw.exe'#当前运行文件的位置
>>> sys.getwindowsversion()
sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack



1')#返回当前windows系统信息

>>> sys.modules.keys()#查看已经导入的模块关键字

二、字节编译
1.何为Python的.pyc文件
    我们所说的.pyc文件是以.pyc为后缀名的这一类文件。我们知道,由于我们计算机只认识二进制的机器语言,所以我们在执行Python模块的时候,有两种执行方式:一种是将模块的内容编译成二进制语言,然后执行这些二进制语言,另一种是执行对应模块里面的二进制语言程序。第二种方式省略了编译这一步,所以执行速度相对来说要快一些。而把模块编译成二进制语言程序的这个过程叫做字节编译,这个过程会产生一个与编译的模块对应的.pyc文件,所以说.pyc文件就是经过编译后的模块对应的二进制文件

2.字节编译和编译的区别
字节编译:把模块编译成二进制语言程序的这个过程
Python是一种解释型语言,not编译型语言,所以有人会说怎么来的字节编译,其实Python中虽然出现了编译这个过程,但是它和其他的编译型语言不同的是,它的编译是由解释器完成的,毕竟每个程序想要执行都需要变成二进制的形式,编译型语言是指软件中有一个独立的编译模块去将程序编译,而Python没有,它有解释器

3..pyc文件的产生
   字节编译过程中会产生一个与编译的模块对应的.pyc文件,即.pyc文件就是经过编译后模块对应的二进制文件。
有两种.pyc产生的方式:
第一种:import
1
2
>>> import zipfile
>>>



第二种:CMD命令行
通过输入:cd: d:\Python27\Lib进入到lib文件行,然后输入:python -m compileall xmllib.py

4..pyc文件的使用
    在Python中,.pyc文件最大的一个作用就是加快了模块的运行速度(可以直接运行.pyc文件,不需要编译)。其实.pyc还有反编译等高级功能

反编译:把二进制文件还原成源文件

三、From...import详解
    1.Python中阴道一个模块的方法就是使用import,但是import只是导入了这个模块,而并没有导入我们模块的某个属性和方法,而我们不仅要导入一个模块,还要导入模块中对应的一个功能,我们可以使用From...import语句
#实例:
1
2
3
4
5
6
7
8
9
10
>>> import sys
>>> sys.version
'2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)]'
>>> version
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    version
NameError: name 'version' is not defined
>>> from sys import version
>>> version



'2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)]'
>>> #直接调用version,没有出现错误

2.使用from...import*
   在Python中是用from...import语句只能导入一个模块的一个功能,如果我们要把这个模块的所有功能,也就是所有属性和方法都到如的话,我们可以使用from...import*语句。
#实例:
1
2
3
4
5
6
7
8
9
>>> executable
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    executable
NameError: name 'executable' is not defined
>>> #executable是sys的另外一个功能,用于查看当前目录
>>> from sys import *
>>> executable
'D:\\Python27\\Python279\\pythonw.exe'




四、认识__name__属性
1.认识主模块
    在Python函数中,如果一个函数调用其他函数完成一项功能,我们称这个函数为主函数,如果一个函数没有调用其他函数,我们称这种函数为非主函数。模块也是类似的,如果一个模块被直接使用,而没有被别人调用,我们称之为主模块,如果一个模块被别人调用,我们称之为非主模块

2.认识_name_属性
#首先我们分别看一下这个模块在不同场景中的__name__的值
print __name__
#输出结果:
_main_#主模块

区分是否主模块,就看自己调用还是被别人调用

3.__name__属性的使用
   在Python中有主模块和非主模块之分,那么如何区分主模块和非主模块呢,如果一个模块的_name_属性值是_main_,那么说明这个模块是主模块,反之不是,其实我们可以把_name_看作一个变量,这个变量由sye系统给出,用于判断一个模块是否是主模块
#实例
#其次我们看一下__name__属性的常用情况,用来判断是不是自己执行,还是被调用
1
2
3
4
5
6
7
8
9
10
#'*'coding=utf-8'*'
#用来防止编码错误
if __name__=="__main__":#两个下划线
    print "It's main"
else:
    print "It's not main"
#输出结果:
>>> import lname_
It's not main
>>>




五、自定义模块
1.何为自定义模块
   Python中有许多模块,有的模块是不需要用户自己去定义的去编写的,Python在安装的时候就自带的模块,这些模块是系统自带模块。而有一些模块刚好跟这种模块不同,它是需要我们自己去定义去编写的模块,称之为自定义模块

2.自定义模块使用详解
(1).只要将自己编写的Python程序(.py)保存到Lib目录下就可以了

(2).编写代码
      Ctrl+s保存然后保存到Lib就可以了
#实例:
创建程序,定义函数:
1
2
3
4
5
def add(i,j):
    k=i+j
    return k
k=add(i,j)
print k



难点:参数传递,把参数传递到i,j
在函数之前加入初始化值:
1
2
3
4
5
6
7
i=0
j=0
def add(i,j):
    k=i+j
    return k
k=add(i,j)
print k



这样语法和逻辑就不会出现错误
Crtl+s
然后开始传递参数:
1
2
3
4
5
6
7
>>> import add
0
>>> i=6
>>> j=7
>>> add.add (i,j)
13
>>>



或者在函数前先进行声明后再保存:
1
2
3
4
5
6
7
int i
in j
def add(i,j):
    k=i+j
    return k
k=add(i,j)
print k



#输出结果:
1
2
3
4
5
6
>>> import add
>>> i=6
>>> j=7
>>> add.add (i,j)
13
>>>




六、dir函数
1.认识dir()函数
    Python中有非常多的模块,但是有时候我们会忘记一个模块有哪些功能,这时候,我们可以通过dir()函数来查看下指定模块的功能列表

#查看sys模块:
>
1
2
3
4
>> import sys  #先导入
>>> dir(sys)    #再查看
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', '_mercurial', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_traceback', 'exc_type', 'exc_value', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'getwindowsversion', 'hexversion', 'long_info', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'py3kwarning', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions', 'winver']
>>> sys.__doc__#可以进行查看




2.dir函数扩展详解
#实例:
1
2
3
4
5
6
7
8
9
10
11
>>> d=[]
>>> dir(d)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> c=['a','b']
>>> dir(c)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> #返回值一样,dir返回的只有属性,不区分数据
>>> e=()
>>> dir(e)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
>>>









运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-89983-1-1.html 上篇帖子: python实现目录递归遍历 下篇帖子: Python开发MySQL数据库(表)克隆工具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表