一、模块的使用之import

1 什么是模块?
模块就一系统功能的集合体,在python中,一个py文件就是一个模块,比如module.py,其中模块名module 2 使用模块 2.1 import 导入模块
首次导入模块发生三件事
1、创建一个模块的名称空间
2、执行模块对应文件,将产生的名字存放于1中的名称空间
3、在当前执行文件中拿到一个模块名,该模块名指向1的名称空间 import spam
强调:之后的导入会直接引用第一次导入的结果,不会重复执行文件 import spam
import spam
import spam
import spam
import spam #以上导入的是第一次导入的结果 print(spam) 模块中功能的执行始终以模块自己的名称空间为准
read1=111111
print(spam.read1)#调用了spam模块中read1函数,输出的是spam模块中的read1
money=1111111111111111
spam.change() #调用了spam模块中change函数,函数功能修改money的值,最最后修改的还是spam模块中的值,跟执行文件中的money无关
print(money)
spam.read1()
3、为模块起别名
import spam as sm #将模块名spam改为sm,调用spam模块中的功能,用sm调用就可以了,主要用于某些模块名过长,改为简写,更方便调用
print(sm.money)
sm.read1() engine=input('>>: ').strip() #根据输入判断要用什么模块,模块名都改为相同的
if engine == 'mysql':
import mysql as db
elif engine == 'oracle':
import oracle as db
db.parse() #调用时根据输入的模块名来执行 4、一行导入多个模块(不推荐使用)
import spam,mysql,oracle 推荐写成多行
import spam
import mysql
import orcacle

二、模块的使用之from...import...

首次导入模块发生三件事
1、创建一个模块的名称空间
2、执行模块对应文件,将产生的名字存放于1中的名称空间
提示:from 。。。 import。。与import前两件事一模一样
3、在当前名称空间中直接拿到模块中的名字,可以直接使用,不用加任何前缀 import spam # spam.名字 #调用功能方法:模块名.功能名 from spam import money,read1,read2,change #用drom。。。import。。。调用模块,提前把功能名写出来,这样调用所需要的功能时就不需要写名字了
print(money)
read1()
read2()
change()
————————————————————————————————————————————————————————————————
import spam
print(money) 注意:
1、同import,执行模块中的功能,始终以模块的名称空间为准
money=1111111111
spam.change() #调用spam模块中的change功能,把money的值替换为0
print(money) #输出发现money的值为111111111111,也就是说,模块功能中改变的也只是模块中money的值
————————————————————————————————————————————————————————————————
2、from ... import 名字,拿到的名字可以不加前缀直接使用,使用起来更加方便
当问题是容易与当前执行文件中相同的名字冲突
money=1111111111111111
print(money)#先从当前开始找money,在当前找到了就执行当前的money,没有找到再去模块中找,所有,不要把变量名定义与模块中的功能相同
read1=1111111
read1()
————————————————————————————————————————————————
#如果功能太多的话,一个个写不太现实,一般就用*代替所有功能
#注意,因为有些功能有用,有些功能不常用,所有模块设计者就用__all__把常用的功能放入其中,*也就只能调用常用的功能了
__all__=['money','read1'] # from .. import *
from ... import *
from spam import * #调用spam模块内所有可以被*调用的功能 print(money)
print(read1)
print(read2)
print(change)

三、模块的搜索路径

import m1
m1.f1()
模块的查找顺序是:
1、内存中已经加载的模块
2、内置模块
3、sys.path路径中包含的模块
import time #调用模块time import m1 #调用ml
m1.f1() time.sleep(15) #用15秒时间删除ml,试试下面的ml还能不能用
import m1 #还可以使用,因为第一次调用模块ml就已经存在内存中了,只要程序不结束,内存中的模块ml就不会清空,可以一直调用
m1.f1() import sys
print('time' in sys.modules)#sys.module被导入的包 #结果为False,因为还没有导入time模块
import time
time.sleep(2)
print('time' in sys.modules)#结果为True,因为上面导入了time模块
import sys 
sys.path.append(r'D:\code\SH_fullstack_s1\day14\dir1')#将文件地址加入sys.path中
import m1
m1.f1() 强调强调强调强调强调强调强调强调强调强调强调强调
sys.path的第一个路径是当前执行文件所在的文件夹

Python之旅.第四章.模块与包 4.02的更多相关文章

  1. Python之旅.第四章.模块与包.总结(未完待遇)

    一.模块 模块: 一系列功能的集合体,在python中一个py文件就是一个模块,模块名就是py文件的文件名: 模块的好处: 1.减少重复的代码 2.拿来主义 定义模块: 就是创建一个py文件: 使用模 ...

  2. Python之旅.第三章.函数4.01/4.02

    一.三元表达式 #普通的判断大小函数def max2(x,y): if x > y: return x else: return yres=max2(10,11)print(res)x=12y= ...

  3. python学习心得第四章

     python 学习心得第四章 1.lambda表达式 1:什么是lambda表达式 为了简化简单函数的代码,选择使用lambda表达式 上面两个函数的表达式虽然不一样,但是本质是一样的,并且lamb ...

  4. perl 第十四章 Perl5的包和模块

    第十四章 Perl5的包和模块 by flamephoenix 一.require函数  1.require函数和子程序库  2.用require指定Perl版本二.包  1.包的定义  2.在包间切 ...

  5. 进击的Python【第十四章】:Web前端基础之Javascript

    进击的Python[第十四章]:Web前端基础之Javascript 一.javascript是什么 JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编 ...

  6. [Python学习笔记][第四章Python字符串]

    2016/1/28学习内容 第四章 Python字符串与正则表达式之字符串 编码规则 UTF-8 以1个字节表示英语字符(兼容ASCII),以3个字节表示中文及其他语言,UTF-8对全世界所有国家需要 ...

  7. 《Python CookBook2》 第四章 Python技巧 对象拷贝 && 通过列表推导构建列表

    (先学第四章) 对象拷贝 任务: Python通常只是使用指向原对象的引用,并不是真正的拷贝. 解决方案: >>> a = [1,2,3] >>> import c ...

  8. 《零压力学Python》 之 第四章知识点归纳

    第四章(决策和循环)知识点归纳 if condition: indented_statements [ elif condition: Indented_statements] [else: Inde ...

  9. python 教程 第十四章、 地址薄作业

    第十四章. 地址薄作业 #A Byte of Python #!/usr/bin/env python import cPickle import os #define the contacts fi ...

随机推荐

  1. IDE-IntelliJ IDEA 主题、字体、编辑区主题、文件编码修改、乱码问题

    主题修改 上图标注 1 所示为 IntelliJ IDEA 修改主题的地方,可以通过打开左上角的File -> Setting.在 Windows 系统上 IntelliJ IDEA 默认提供的 ...

  2. sqlserver中压缩日志文件

    最近在转移数据,sqlserver的日志文件ldf,占用空间特别大,为了还原库,节省空间,所以压缩日志文件迫在眉睫.在网上找了一段代码: USE [master] GO ALTER DATABASE ...

  3. .net framework 4.5 +steeltoe+ springcloud 实现服务注册功能

    首先得先了解并熟悉一下springcloud,并手动去搭建一个服务中心,具体可度娘教程. 如果是.net core的话,实现注册也是没有问题的,网上教程很多,可自行度娘. 最难的就是基于Framewo ...

  4. linux下线程的两种封装方式

    在网络编程的时候往往需要对Linux下原生的pthread库中的函数进行封装,使其使用起来更加方便,封装方法一般有两种:面向对象和基于对象,下面将分别介绍这两种方式,最后统一分析这两种方式的优缺点: ...

  5. PAT乙级-1063. 计算谱半径(20)

    在数学中,矩阵的"谱半径"是指其特征值的模集合的上确界.换言之,对于给定的n个复数空间的特征值{a1+b1i, ..., an+bni},它们的模为实部与虚部的平方和的开方,而&q ...

  6. IE浏览器URL中文传参,后端接收是乱码问题处理

    这个问题还是因为IE浏览器是国外产品,人家交流的主要语言是英语,中文不识别. 直接上代码,亲测无误. //判断是否是IE浏览器 function isIE() { var userAgent = na ...

  7. TCP 连接关闭及TIME_WAIT探究

    这里主要记录一下TCP连接在关闭的时刻,有哪些细节问题.方便在以后的程序设计中能够注意这些细节, 以避免出现这些错误.首先我们来看一下TCP的状态转换图.如<unix网络编程>卷一所示如下 ...

  8. cxGrid_Q31584 cxgrid 拖放移动记录

    cxgrid 拖放移动记录,cxgrid 拖放,cxgrid 拖动记录,cxgrid 鼠标拖动记录 这是cxgrid开发公司回复客户时所发送的源码项目,用于实现鼠标拖动记录,改变记录在表格中的位置,所 ...

  9. 兄弟连PHP培训教你提升效率的20个要点

    兄弟连PHP培训教你提升效率的20个要点 用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字 ...

  10. Xss问题解决方案

    xss跨站脚本攻击问题最主要是呈现在html页面的脚本被执行导致的结果,可分为两个方便作屏蔽 后台屏蔽 在前端上传的各个参数后,对其进行转义后再保存至数据库,属于暴力式转义,一般不建议.下面是写的例子 ...