python模块

Python 中的模块

模块是一个包含 Python 代码的 .py 文件
模块既可以被导入到 Python 的交互式解释器中,也可以被导入到其他模块中,除此之外,模块还可以作为独立的脚本来执行。

导入模块的动作由 import 语句完成,通常(非必需)将所有的 import 语句放在一个模块(或脚本)的开头处,被导入的模块名被放置在导入模块的全局符号表中。

一个模块可以包含可执行语句和函数定义,这些语句用于初始化模块,它们仅在 import 语句中第一次遇到模块名时执行(如果文件作为脚本执行,它们也会运行)。

Python 本身提供了大量的标准模块(例如:mathos),完整的列表可以在 Python Module Index 中找到,这些文件位于 Python 安装位置的 Lib 目录中。

注意:标准模块的导入方式与用户自定义模块的导入方式相同

import 语句

可以使用 import语句导入一个模块,并使用点(.)运算符访问其中的名称(定义)。

例如,我们编写了一个 script.py模块,来访问标准模块 math

1. import math
2. 
3. print('pi:', math.pi)
4. print('fabs:', math.fabs(-2))

其中,pimath的属性,也就是数学中的圆周率 - π。而 fabs()是其中的函数,用于取绝对值。

执行脚本:

1. $ python script.py 
2. pi: 3.141592653589793
3. fabs: 2.0

如果要导入多个模块,可以使用多个 import 语句:

1. import math
2. import os

也可以将其合并为一个,模块名之间用逗号(,)进行分隔:

1. import math, os

from ... import ... 语句

可以从模块导入特定的名称,而无需导入整个模块。

例如,从math模块仅导入属性pi

1. from math import pi
2. 
3. print('pi:', pi)
4. 
5. # 无效,引发 NameError
6. #print('pi:', math.pi)
7. #print('fabs:', fabs(-2))

这时,要访问pi,不需要使用点运算符。

注意: 在这种情况下,由于只导入了pi而没有导入其他名称,所以无法访问 fabs()

from ... import * 语句

可以使用星号(*)从模块中导入所有的名称。

1. from math import *
2. 
3. print('pi:', pi)
4. print('fabs:', fabs(-2))

这样,math 模块中的所有定义都会被导入,这使得除了以下划线(_)开始的所有名字在范围内都是可见的。

注意: 这种用法并不好,因为会引入一组未知的名称,而且有可能导致标识符的重复定义,可读性很差,所以不建议使用。

import ... as ... 语句

一旦模块名称过长,便可以在导入时进行重命名,帮助记忆。

例如,将math重命名为m

1. import math as m
2. 
3. print('pi:', m.pi)
4. print('fabs:', m.fabs(-2))
5. 
6. # 无效,引发 NameError
7. #print('pi:', math.pi)
8. #print('fabs:', math.fabs(-2))

自定义模块及调用

自定义的python模块有两种,一种是把模块写成类,类里面有要调用的方法。另一种写成单独的py文件,没有类,里面全是函数。(有类才叫方法,没有类叫函数),也是所谓的面向过程的函数。
第一种调用如下:
例如在b.py里要调用a.py里的class A,A有方法a1, a2等

#导入类A(这种更适合把模块写成类的)
1. from a import A 
2. 
3. #调用类A的方法
4. testa=A()
5. testa.a1()

第二种调用的时候导入模块,通过模块名.函数名()即可调用。
调用模块如下:
例如先写好a.py,里面有a1,a2,a3等函数。在b.py要调用模块a

#导入模块a
1. import a
2. ....
3. ....
4. 
5. #调用a模块的函数
6. a.a1()
7. a.a2()
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 目录 本文将在学习Python中模块的概念的基础上,通过一些示例来继续学习模块标准模板、import、from…i...
    TensorFlow开发者阅读 775评论 0 0
  • 1模块 1.1Python中的模块介绍和使用 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须...
    PythonMaO阅读 421评论 0 0
  • 1模块 1.1Python中的模块介绍和使用 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须...
    西多的大叔阅读 1,814评论 0 0
  • 模块简介 在软件开发过程中,随着代码的不断增加,在一个问价里代码就会越来越长,不容易维护。为了编写可维护的代码,我...
    齐天大圣李圣杰阅读 794评论 0 0
  • 今天上午我们在第四节课上画了一幅新画。画的内容是:几只蜜蜂众星拱月般地围着几朵向日葵。蓝天白云、绿草如茵。中午回家...
    马晨轩2007阅读 153评论 0 0