码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习日志之Python模块

时间:2015-07-24 00:09:10      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:import   python   模块   调用   

Python入门学习笔记之Python模块

Python模块:

一、认识Python模块

1.什么是模块

    函数是可以实现一项或多项功能的一段程序。我们的模块是函数功能的扩展,模块是可以实现一项或多项功能的程序块。从定义可以看出:函数是一段程序,模块是一项程序块,也就是说函数,模块都是用来实现功能的,但是模块范围要广,在模块里可以重用多个函数


2.如何导入模块

    在Python程序中如果要使用某个模块,不能直接使用某个模块的功能。在模块使用之前,我们需要先导入指定模块,只要导入模块后我们才能使用

>>> import math
>>> math.pi
3.141592653589793
>>>


3.sys系统自带模块

    在Python中有一些模块是不用我们去定义的,Python官方提供的自带的模块。这些模块伴随这Python的安装而产生,我们把这些模块叫做标准库模块。标准库模块是一类模块,而不是一种模块,在标准库模块中,也有非常多的模块,有的模块和电子邮件相关,有的和操作系统相关,还有的和系统功能相关,我们把标准库中和系统相关的这些模块称为sys模块

#实例:

>>> 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

>>> 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语句

#实例:

>>> 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*语句。

#实例:

>>> 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__属性的常用情况,用来判断是不是自己执行,还是被调用

#‘*‘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就可以了

#实例:

创建程序,定义函数:

def add(i,j):
    k=i+j
    return k
k=add(i,j)
print k

难点:参数传递,把参数传递到i,j

在函数之前加入初始化值:

i=0
j=0
def add(i,j):
    k=i+j
    return k
k=add(i,j)
print k

这样语法和逻辑就不会出现错误

Crtl+s

然后开始传递参数:

>>> import add
0
>>> i=6
>>> j=7
>>> add.add (i,j)
13
>>>

或者在函数前先进行声明后再保存:

int i
in j
def add(i,j):
    k=i+j
    return k
k=add(i,j)
print k

#输出结果:

>>> import add
>>> i=6
>>> j=7
>>> add.add (i,j)
13
>>>


六、dir函数

1.认识dir()函数

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


#查看sys模块:

>

>> 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函数扩展详解

#实例:

>>> 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‘]
>>>
















本文出自 “8626774” 博客,请务必保留此出处http://8636774.blog.51cto.com/8626774/1677733

Python学习日志之Python模块

标签:import   python   模块   调用   

原文地址:http://8636774.blog.51cto.com/8626774/1677733

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!