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 “

实例:

executable

Traceback (most recent call last):
File “

首先我们分别看一下这个模块在不同场景中的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’]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值