一、模块的使用之import

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

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

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

三、模块的搜索路径

  1. import m1
    m1.f1()
    模块的查找顺序是:
    1、内存中已经加载的模块
    2、内置模块
    3sys.path路径中包含的模块
    import time #调用模块time
  2.  
  3. import m1 #调用ml
    m1.f1()
  4.  
  5. time.sleep(15) #用15秒时间删除ml,试试下面的ml还能不能用
    import m1 #还可以使用,因为第一次调用模块ml就已经存在内存中了,只要程序不结束,内存中的模块ml就不会清空,可以一直调用
    m1.f1()
  6.  
  7. import sys
    print('time' in sys.modules)#sys.module被导入的包 #结果为False,因为还没有导入time模块
    import time
    time.sleep(2)
    print('time' in sys.modules)#结果为True,因为上面导入了time模块
  1. import sys
    sys.path.append(r'D:\code\SH_fullstack_s1\day14\dir1')#将文件地址加入sys.path
  1. import m1
    m1.f1()
  2.  
  3. 强调强调强调强调强调强调强调强调强调强调强调强调
    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. Vue-生命周期图示 注解

    根据腾讯课堂视频讲解,将官网生命周期图示进行注解,以加深印象和理解 贴一个源码示例: 注意位置和写法

  2. Hadoop 安装流程

    前言:因项目中需要数据分析,因而使用hadoop集群通过离线的方式分析数据 参考着网上的分享的文章实施整合的一篇文章,实施记录 安装流程: 1.设置各个机器建的ssh 无密码登陆 2.安装JDK 3. ...

  3. java操作impala

    public class App { static String JDBC_DRIVER = "com.cloudera.impala.jdbc4.Driver"; static ...

  4. 在Service中抛出异常事务未回滚问题分析与解决

    1.问题提出:在service中写方法时,抛出了一个Exception, 本来目的是为了让事务回滚, 但事实上没有回滚,产生了脏数据.代码如下:@Override@Transactionalpubli ...

  5. tp5.带标签的缓存 创建和清除 测试

    原文:http://www.upwqy.com/details/24.html 测试设置了标签的缓存的获取方式 和清除标签缓存. 有时候我们可能会对同类型的一些数据做统一缓存.和统一清除更新处理. 那 ...

  6. C#编写一款qq消息群发器

    先上软件成品图 功能编写大概分为以下几个部分了: 获取QQ分组 发送消息 先来讲发送消息吧,实现还是比较简单 //这段主要是用来打开会话窗口的(只能列表中的好友进行会话的) System.Diagno ...

  7. QT自定义控件插件化简要概述

    1.选择 "其他项目"->"Qt4 设计师自定义控件" **最好选中所有的编译器平台,由于目前使用的Qt Creator是MSVC2015 32位,因此要 ...

  8. 【Unity3D与23种设计模式】组合模式(Composite)

    前段时间在忙一个新项目 博客好久没有更新了 GoF中定义: "将对象以树状结构组合,用以表现部分-全体的层次关系.组合模式让客户端在操作各个对象或组合时是一致的." 是一致的意思就 ...

  9. VLOOKUP和MATCH嵌套以高效引用多列数据

    VLOOKUP函数在日常工作中十分常见,以至于你要是没用过VLOOKUP函数,你都不好意思说你懂EXCEL. 一般情况下,我们需要在源数据中查找某个指定列的数据,就会用到VLOOKUP函数(如果是指定 ...

  10. Jquery EasyUI datagrid 的一些问题

    在使用 Easy UI datagrid时 出现了一下小问题:  table 中 有数据,但是 没有标题行名..在其他页面同样使用了datagrid 但是没有这样问题. 仔细检查了js代码,确认无误后 ...