模块:模块是一系列功能的结合体

    模块的来源:

        内置的模块(python解释器自带的)

        第三方(开发者编写的模块)

        自定义的模块(自己编写的模块)

    模块的四种表现形式:

        1、使用python编写的py文件(也就意味着py文件也可以称之为模块:一个py文件也可以称之为一个模块)

        2、已被编译为共享库或DLL的C或C++扩展(了解)

        3、把一系列模块组织到一起的文件夹(文件夹下有一个__init__.py的文件,该文件夹被称之为包)   包:是一系列py文件的结合体

        4、使用C编写并连接到python解释器的内置模块

    为什么要使用模块:

        1、用别人写好了的模块(内置的或是第三方的);典型的拿来主义,提高了开发的效率

        2、使用自己写的模块(自定义的);当程序比较庞大的时候,你的项目不可能只在一个py文件中,那么当多个文件中都需要使用相同方法的时候,可以将该公共方法写到一个py文件中。(当其他的文件要调用了就可以直接以模块的形式导入过去了)

    注意点:导入的时候一定要区分哪个是执行文件,哪个是被导入的文件。

import导入:

    导入的三个步骤:

        1、运行执行文件

        2、运行文件中的代码,将产生的名字和值存放到当前文件的名称空间中

        3、在执行文件中产生一个指向名称空间的名字

    import导入:访问模块名称空间中的名字统一使用:模块名.名字

        只有当几个模块有相同部分的时候或者属于同一个模块,可以使用一次性导入,要是几个模块没有联系的话,应该分多次导入。ps:模块的导入的句式应该是在文件的开头,当文件名字比较复杂的时候,应该学会使用as给当前模块区别名。

    

from ... import ...导入:

    导入的三个步骤:

        1、运行执行文件

        2、执行文件中的代码,将产生的名字和值对应的放到文件的的名称空间中

        3、最后直接拿到指向被导入模块中的某个值

    缺点:

        1、访问的模块中名字不需要加模块名的前缀

        2、在访问模块中的名字可能会与当前执行文件中的名字冲突

    补充:

        可以使用*一次性将模块中的名字全部加载过来,但是不推荐使用这种方式,因为一些模块中方法太多太多了,你根本不知道到底哪些名字可以使用。

        __all__:可以指定所在py文件中被当作导入的时候可以限制导入者能够拿到的名字个数。

循环导入问题的解决思路:

    如果出现这种问题那么一定是你的程序设计不合理,这种问题应该在程序设计阶段就应该避免。

    问题解决方式:

        方式一:将循环导入的句式写在文件的最下方

        方式二:函数内导入模块

    

__name__的用法:当

    文件被当作执行文件的时候__name__打印的结果是__main__

    当文件被当作模块导入的时候__name__打印的结果是模块名(没有后缀名)

模块的查找顺序:

    查找顺序:

        1、先从内存找  2、内置中找 3、sys.path中找(环境变量)一定要分清楚谁是执行文件谁是被导入文件

        sys返回的是一个列表,里面放了一些文件的路径,但是第一个路径永远是文件所在的文件夹

    注意:py文件的文件名不应该与模块名(内置的、第三方的)冲突

模块的绝对导入:

    绝对导入必须依据执行文件所在的文件夹路径为准

        绝对导入无论在执行文件中还是被导入文件中都是适用的

想对导入:

    .表示的是当前路径

    ..表示的是上一级路径

    ...表示的是上上一级路径

注意:

    相对导入不能再执行文件中使用

    相对导入只能在被导入的模块中使用,使用相对导入,就不需要考虑执行文件到底是谁了,只需要直到模块与模块之间路径的关系

python基础--模块的查找顺序以及相对导入和绝对导入的更多相关文章

  1. 自学Python之路-Python基础+模块+面向对象+函数

    自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python    1.1 自学Python1.1-简介    1.2 自学Python1.2-环境的 ...

  2. python基础----模块、包

    一 模块                                                                                                 ...

  3. Python基础-模块与包

    一.如何使用模块 上篇文章已经简单介绍了模块及模块的优点,这里着重整理一下模块的使用细节. 1. import 示例文件:spam.py,文件名spam.py,模块名spam #spam.py pri ...

  4. python基础——模块

    python基础——模块 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

  5. Python引用模块和查找模块路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译 ...

  6. Python基础+模块、异常

    date:2018414+2018415 day1+2 一.python基础 #coding=utf-8 #注释 #算数运算 +(加)  -(减)  *(乘)  /(除)  //(取整)  %(取余) ...

  7. Python入门之Python引用模块和查找模块路径

    #这篇文章主要介绍了Python引用模块和Python查找模块路径的相关资料,需要的朋友可以参考下 模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的, ...

  8. python—命名空间、作用域查找顺序、闭包

    名称空间 name space,如下图: x = 1, 1存放在内存中,1 会有一个内存地址,x 则 存放在 name space 里,并同时记录了 1的内存地址, 即 名称空间是存放了变量x与1绑定 ...

  9. python27期day15:自定义模块、模块导入、模块的路径、模块的查找顺序、time、datetime、random、os、sys、作业题

    1.模块的介绍: py文件就是一个模块 2.模块的分类:内置模块:python标准库 200 第三方模块 自定义模块 3.为什么学习模块? 开发效率高,内置函数和模块 减少重复代码,分文件管理,有助于 ...

随机推荐

  1. Django项目在linux上运行

    目录 前言 上传 解压 制作启动脚本 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 前言 我们在windows本地开发完Django项目后,需要把项目部署到lin ...

  2. angular管道操作符的使用

    一.Angular的常用内置管道函数 比如说很多时候我们需要把数字显示成金额.大小写转换.日期小数转换等等. Angular管道对于象这样小型的转换来说是个很方便的选择. 管道是一个简单的函数,它接受 ...

  3. HttpUrlConnection post 乱码 终极解决方案

    今天遇到了java后台模拟http请求,以POST方式传参中文乱码,google了一下,大部分是在打开的HttpURLConnection的输入流的时候设置编码(utf-8),按照设置,试了下并没有解 ...

  4. a common method to rotate the image

    /* * clockwise rotate * first reverse up to down, then swap the symmetry * 1 2 3 7 8 9 7 4 1 * 4 5 6 ...

  5. wifi共享大师,去除弹窗广告。

    1.安装WiFi共享大师 2.不要打开 3.右键打开文件所在位置 4.在任意目录新建三个空的txt,重命名为MiniNews.exe.ProLive.exe.WifiUpdate.exe 5.将上面的 ...

  6. 《DSP using MATLAB》Problem 8.22

    时光飞逝,亲朋会一个一个离我们远去,孤独漂泊一阵子后,我们自己也要离开, 代码: %% -------------------------------------------------------- ...

  7. VS2017装了西红柿插件之后,启动很多次才能启动成功,进程有很多devenv.exe但是就是无法启动成功

    VS2017装了西红柿插件之后,启动很多次才能启动成功,进程有很多devenv.exe但是就是无法启动成功,这个可能是西红柿插件visual assist的问题 启动vs命令行 输入: devenv ...

  8. fwt优化+树形DP HDU 5909

    //fwt优化+树形DP HDU 5909 //见官方题解 // BestCoder Round #88 http://bestcoder.hdu.edu.cn/ #include <bits/ ...

  9. Python-基本文件处理

    目录 文件的类型 什么是文件? 文件的分类 文件的打开与关闭 文件处理的三个步骤 使用方式 爬虫 requests库的使用 文件的类型 什么是文件? 一堆.py/.txt 存储着文字信息文件, 文件的 ...

  10. light oj 1068 数位dp

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> ...