5-Python 模块

课程概要:
  1、认识Python 模块
  2、字节编译
  3、from … import 详解
  4、认识 name 属性
  5、自定义模块
  6、dir() 函数

1、认识Python 模块

什么是模块?
   如何导入模块?
   sys 模块

一、什么是模块?

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

所有的模块是安装在Python27/Lib 下的,大多是以 .py 结尾的,也有以 .pyc结尾

二、如何导入模块

Python 中在一个程序中要使用某个模块,不能直接使用模里面的功能。在使用模块之前,必须先导入指定模块,只要导入了一个模块,才能使用一个模块。

如何导入pi(3.1415926)

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

三、sys 模块

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

>>> import sys
>>> sys.version     #  查看系统信息
'2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)]'

>>> sys.executable      #  查看当前执行文件的目录
'C:\\Python27\\pythonw.exe'

>>> sys.getwindowsversion()     #   查看windows 的相关信息
sys.getwindowsversion(major=6, minor=1, build=7601,
                         platform=2, service_pack='Service Pack 1')

>>> sys.modules.keys()          #   查看模块关键字

2、字节编译

知识点:
  什么是Python 的 .pyc 文件
  字节编译与编译的区别
  .pyc 的产生
  .pyc 的使用

一、什么是Python 的 .pyc 文件?

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

二、字节编译与编译的区别

把模块编译成二进制语言程序的这个过程叫做字节编译。Python是一种解释型语言,而不是一种编译型语言。很多人认为,Python 中出现字节编译,那么Python 就应该是一种编译型语言。其实这种观点是不正确的。Python 中虽然出现了编译这个过程,但是Python 中编译的过程是在Python 的解释器中发生的。话句话来说,其实每种程序要想让计算机执行,都只能变成二进制的形式,编译型语言是指在软件中就有一个独立的编译模块去将程序编译,而Python 中字节编译这部分功能是由解释器完成的,所以Python 仍然是解释语言。

三、.pyc 文件的产生

字节编译这个过程会产生一个与编译的模块对应的 .pyc 文件。.pyc文件就是经过编译后的模块对应的二进制文件。该模块如果有 .pyc文件就直接执行,没有执行一下则会编译该文件,生成 .pyc 文件。

编译有两种方法:
  第一种:import 该模块
  第二种:cmd 命令行

四、.pyc 文件的使用

在Python 中,.pyc 文件最大的一个作用就是加快了模块的运行速度。那么 .pyc 文件具体来说有什么用呢?如果我们深入学习下去,我们就会知道 .pyc 文件今后还可以做反编译等等高级功能。

二进制文件查看器:Binary Viewer


3、from … import 详解

知识点:
  学会使用 from … import
  学会使用 from … import *

一、学会使用 from … import 文件

Python 中导入一个模块的方法我们可以使用 import,但是import 只是导入了这个模块,而并没有导入我们模块的某个属性或方法。而我们要不仅导入一个模块,还有导入模块中对应的一个功能,我们可以使用from … import 语句。

>>> from sys import version
>>> version
'2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)]'

二、学会使用 from … import *

在Python 中使用from … import 语句只能一次导入一个模块的一个功能,我们如果要想一次性把这个模块的所有功能,也就是所有属性与方法都导入的话,我们可以使用from … import * 语句。

>>> from sys import *
>>> executable
'C:\\Python27\\pythonw.exe'

4、认识 name 属性

知识点:
  认识主模块
  认识 __name__ 属性
  对于__name__属性的使用

一、认识主模块

我们Python 函数中,如果一个函数调用其他函数完成一项功能,我们称这个函数为主函数,如果一个函数没有调用其他函数,我们这种函数叫做非主函数。模块也是一样的,如果一个模块是直接使用的,而没有被别人调用,我们称这个模块为主模块;如果一个模块被别人调用,我们称这种模块叫做非主模块。

二、认识 name 属性
在Python 中有主模块与非主模块之分,那么如何区分主模块与非主模块?如果一个模块的 name 属性的值时 main ,那么久说明这个模块是猪模块,反之亦然。其实我们可以把 name 看做一个变量,这个变量是系统给出的,这个变量的功能是判断一个模块是否是主模块。

if __name__ == '__main__':
    print "It is main"
else:
    print "It is not main"

>>> 
It is main

>>> import numpy    #   numpy是非主模块

5、自定义模块

知识点:
  什么是自定义模块
  自定义模块使用详解

一、什么是自定义模块

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

二、自定义模块使用详解

第一种方法:在 Python27/Lib 下建立 .py 文件,该文件就成为自定义模块。
第二种方法:用IDLE保存文件在Python27/Lib 下

#   从模块外传入参数
#   test_add.py

i = 0                   #   初始化I, j 是防止 import test_add 出错
j = 0

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

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

又或者改成这样

int i
int j

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

k = add(i,j)
print k
>>> import test_add
>>> test_add.add(4, 5)
9

6、dir() 函数

知识点:
  认识dir() 函数
  dir() 函数扩展详解

一、认识dir() 函数

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

>>> import sys
>>> dir(sys)
>>> sys.__doc__
>>>sys.platform
'win32'

二、dir() 函数扩展详解

Python 中dir() 函数不仅仅能查看模块的功能列表,还能查看任意指定对象的功能列表。

  • 两者返回内容相同
  • dir() 函数查看的仅仅是属性的列表,而不携带数据
  • dir() 也可以返回字符串、元组等属性列表
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 1. 简单的例子 先从一个简单的例子说起,包含了两个文件 foo.py 和 demo.py 执行这个程序pytho...
    jiangmo阅读 1,582评论 0 5
  • 两本不错的书: 《Python参考手册》:对Python各个标准模块,特性介绍的比较详细。 《Python核心编程...
    静熙老师哈哈哈阅读 3,329评论 0 80
  • 文/Bruce.Liu1 1.Python前世今生 1.1.Python历史 Python的创始人: Guido ...
    BruceLiu1阅读 11,645评论 3 120
  • 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入...
    小小不懂11阅读 3,336评论 2 30
  • python学习笔记 声明:学习笔记主要是根据廖雪峰官方网站python学习学习的,另外根据自己平时的积累进行修正...
    renyangfar阅读 2,941评论 0 10