模块与包

一、模块

  1、模块是怎么诞生的。

     在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到  不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。

  2、模块的作用。

    提高了代码的可维护性。其次是编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。另外,使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。

  3、模块的分类

    1.系统内置模块,即python标准库

    2.第三方模块,即他人编写好了的模块,直接下载下来用就可以了(scary,requests等)

    3.应用程序自定义模块,即编程人员自己编写的模块。

  4、模块的导入方式。

    1.import 语句

      格式:import 模块名

        注释:模块导入时如果是内置模块会直接被导入,如果是第三方模块或者是自定义模块则会根据sys.path所给的路径进行查找。

           一个模块可以在当前位置import多次,但只有第一次导入会执行源文件内的代码,原因是:第一次导入就会将模块包含的内容统统加载到

内存了,以后在当前文件位置的导入都是指向内存中已有的模块

    2.from…import 语句

      格式:import  模块名  import 变量名

      注释:这个声明不会把整个modulename模块导入到当前的命名空间中,只会将它里面的变量名单个引入到执行这个声明的模块的全局符号表。

    3.补充.

      当import一个模块时,首先会立刻创建一个新的名称空间,用来存放该模块中定义的所有变量的名字;然后会在该名称空间内执行foo.py内所有的代码,

最后需要知道的是import关键字就是定义了一个名字,只不过此刻我们用import定义的是一个模块名字foo,该名字就是指向foo.py的名称空间,而foo.的方式

就是从该名称空间里找名字,可以使用foo.__dict__来查看这些名字。

     注释:import的两个过程:  创建新的名称空间  {名字:对象和}执行被调用的模块 (第二次不会被执行)。

二、包

  1、为什么会有包。

    如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package),引入了包以后,只要顶层的包

名不与别人冲突,那所有模块都不会与别人冲突。

  2、什么是包?

    包的作用和文件夹的作用相同,只不过与文件夹的区别是新建一个包会自动产生一个__init__.py的文件,该文件可以写内容也可以不写内容。__init__.py的

模块名就死对应的包名,意思就死说当你直接调用这个包的时候实际上是调用包下面init里的东西。

  3、如何调用包内模块

    1.如果调用模块和被调用模块在同一个包内,俩模块是属于亲兄弟关系那么这俩模块可直接被调用。

    2.如果调用模块和被调用模块在同一个包内,俩模块是属于亲叔侄关系,那么需要以from 包名 import  模块名 来调用该模块

    3.如果调用模块和被调用模块在同一个包内,俩模块是属于表叔侄关系,那么久需要调用os模块吧被调用包的路径加到sys.path中去。

    eg:import os,sys  #调用模块
     BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#调用文件路径
     print(BASE_DIR)
     sys.path.insert(0,BASE_DIR)#添加到搜索路径

python基础14 ---函数模块5(模块和包)的更多相关文章

  1. python基础14 ---函数模块4(configparser模块)

    configparser模块 一.configparser模块 1.什么是configparser模块:configparser模块操作配置文件,配置文件的格式与windows ini和linux的c ...

  2. python基础——filter函数

    python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...

  3. 十四. Python基础(14)--递归

    十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...

  4. 八. Python基础(8)--函数

    八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x):     ' ...

  5. python基础——匿名函数

    python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便.  在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...

  6. python基础——返回函数

    python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.  我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...

  7. python基础——sorted()函数

    python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...

  8. python基础——匿名函数及递归函数

    python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...

  9. python基础之函数详解

    Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...

随机推荐

  1. SecureCRT如何调整好看的黄色

    1.常规 →默认会话→编辑默认编辑→白黑 字体为console 2.全局选项 ANSI颜色有一个 把黄色 拖过去即可

  2. uva 10034 Freckles (kruskal||prim)

    题目上仅仅给的坐标,没有给出来边的长度,不管是prim算法还是kruskal算法我们都须要知道边的长度来操作. 这道题是浮点数,也没啥大的差别,处理一下就能够了. 有关这两个算法的介绍前面我已经写过了 ...

  3. 苹果版小黄车(ofo)app主页菜单效果

    代码地址如下:http://www.demodashi.com/demo/12823.html 前言: 最近又是公司项目上线一段时间了,又是到了程序汪整理代码的节奏了.刚好也用到了ofo主页菜单的效果 ...

  4. [LeetCode]Palindrome Number 推断二进制和十进制是否为回文

    class Solution { public: bool isPalindrome2(int x) {//二进制 int num=1,len=1,t=x>>1; while(t){ nu ...

  5. Maven常见异常及解决方法(本篇停更至16-4-12)

    本篇文章记录了老猫在学习整合Maven和SSH过程中遇到的问题,有的问题可以解决.有的问题还不能解决. 方法不一定适合全部的环境.但绝对是本人常遇到的常见异常.在这里做一个笔记和记录,也分享给大家,希 ...

  6. github上比較好的开源项目(持续更新)

    1:https://github.com/Skykai521/StickerCamera 实现相机功能 实现对图片进行裁剪的功能 图片的滤镜功能 能为图片加入贴纸(贴纸可移动,放大,旋转) 能为图片加 ...

  7. 智能提示(一) Solr (suggest)

    电商搜索中要实现这么一块功能,当输入文字时候.下拉框提示.类似于百度搜索 在师出名门的基于lucene的solr搜索引擎中.提供了 拼写检查和智能提示这块功能.   拼写检查就是用来检查用户输入的检索 ...

  8. php 判断数组中是否有重复的值

    $input = array(4, "4", "3", 4, 3, "3"); $result = array_unique($input) ...

  9. 多媒体开发之--- rtsp 中的H264 编码+打包+解码相关知识es、pes、ts...

    1)ES流(Elementary Stream): 也叫基本码流,包含视频.音频或数据的连续码流. 2)PES流(Packet Elementary Stream): 也叫打包的基本码流, 是将基本的 ...

  10. linux 常用的17个性能指标

    1.Average load:Average number of processes simultaneously in Ready state during the last minute.   上 ...