一,模块概念

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

模块有有什么好处呢?

最大的好处就是大大提高了代码的可维护性。

其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

所以,模块一共三种:

*python标准库

*第三方模块

*应用程序自定义模块

模块导入方法

1 import 语句

1 | import modulel

当我们使用import语句的时候,python解释器是怎样找到对应的文件的呢?答案就是解释器有自己的搜索路径,存在sys.path里。

因此如果当前目录下存在与要引入的模块同名的文件,就会把要引入的模块屏蔽掉。

2,from...import 语句

1 | from modname impott name1

这个声明不会把整个modulename模块导入到当前的命名空间中,只会引入它里面的name1函数

3 from ...import * 语句

1| from modname import *

这提供了一个简单的方法导入一个模块中所有的项目。但是这种声明容易覆盖已有的定义,不建议使用。

4 运行本质

1 |# import test

2 | #2 from test import add

无论1还是2 ,首先通过sys.path 找到test.py ,然后执行脚本(全部执行),区别是1会将test这个变量名加载到名字空间,而2只会将add这个变量名加载进来。

包(package)

如果不同的人编写的模块名相同了怎么办?为了避免模块名冲突,python又引入了按目录来组织模块的方法,称为包(package).

举个例子,一个abc.py的文件就是一个名字叫abc的模块。一个xyz.py的文件就是一个名字叫做xyz的模块。

现在,假设我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名:

引入包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在view.py模块的名字就变成了hello_diango.app()1.views,类似的,manage.py的模块名是hello_diango.manage.

注意 ,每一个包下必须包含一个_init_,py的文件,这个文件是必须存在的,否则,python就把这个目录当成普通目录(文件夹),而不是一个包。_init_.py可以是一个空文件,也可以是python代码,因为_init_.py本身就是一个模块,而它的模块名就是对应的包的名字。

调用包就是执行包下的_init_.py文件

python中模块介绍的更多相关文章

  1. Python中模块之os的功能介绍

    Python中模块之os的功能介绍 1. os的变量 path 模块路径 方法:os.path 返回值:module 例如:print(os.path) >>> <module ...

  2. 查看python中模块的所有方法

    查看python中模块的所有方法     安装的python模块,现将查看方法总结如下 一.CMD命令行下使用pydoc命令 在命令行下运行$ pydoc modules即可查看 二.在python交 ...

  3. [python]关于在python中模块导入问题追加总结

    [背景] 最近在写程序时,我使用的eclipse编辑器运行都没有问题,然后部署到自动化环境上却偏偏报找不到相应模块问题,现在对该问题在之前的贴子上追加总结 原帖子:[python]关于python中模 ...

  4. [笔记]Python中模块互相调用的例子

    python中模块互相调用容易出错,经常是在本地路径下工作正常,切换到其他路径来调用,就各种模块找不到了. 解决方法是通过__file__定位当前文件的真实路径,再通过sys.path.append( ...

  5. Python中模块之time&datetime的功能介绍

    time&datetime的功能介绍 1. time模块 1. 时间的分类 1. 时间戳:以秒为单位的整数 2. 时间字符格式化:常见的年月日时分秒 3. 时间元祖格式:9大元素,每个元素对应 ...

  6. Python中模块之copy的功能介绍

    模块之copy的功能介绍 copy主要分两种: 1.浅拷贝 2.深拷贝 赋值: 在python中赋值算特殊的拷贝,其实赋值可以理解为同一个对象有两个名字,所以当其中一个发生变化,另一个也跟着会变化. ...

  7. Python中模块json与pickle的功能介绍

    json & pickle & shelve 1. json的序列化与反序列化 json的使用需要导入该模块,一般使用import json即可. json的序列化 方法1:json. ...

  8. Python—time模块介绍

    time 模块 在平常的代码中,我们常常需要与时间打交道.在Python中,常用的与时间处理有关的模块就包括:time,datetime,下面来介绍time模块. 在开始之前,首先要说明几点: 一.在 ...

  9. Python之模块介绍

    模块介绍 模块,是用一些代码实现的某个功能的代码集合. 类似与函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用,提供了代码的重用性和代码间的耦合.对于一个复杂的功能,可能需要多个函 ...

随机推荐

  1. layer帮助手册

    layer帮助手册 键:值    调用时按需重新分配,可实现各种风格,如:$.layer({键:值,键:值,......}) 描述 type:0 层的类型.0:信息框(默认),1:页面层,2:ifra ...

  2. Arrays工具类使用与源码分析(1)

    Arrays工具类主要是方便数组操作的,学习好该类可以让我们在编程过程中轻松解决数组相关的问题,简化代码的开发. Arrays类有一个私有的构造函数,没有对外提供实例化的方法,因此无法实例化对象.因为 ...

  3. Day5---Python的random库

    random库 1.random库是随机数的Python标准库   2.原理 : random生成的伪随机数,而采用梅森旋转算法生成的(伪)随机序列中的元素叫做伪随机数 https://liam.pa ...

  4. Using text search in Web page with Sikuli

    在網頁中如何使用Sikuli找特定字串呢? 原理: 我們可以使用 組合鍵 ctrl + 來放大網頁的比例,使得sikuli的OCR功能找的更清準 實作: for i in range(4): type ...

  5. 使用jdbc查询防止出现中文乱码的方法

    在使用mysql创建数据库及表格,在navicat中可以正常查询出中文,但使用jdbc查询的结果中,中文为乱码. 网上查到资料,为了能够彻底一劳永逸的解决这个问题,需要修改mysql下配置文件my.i ...

  6. CSRF——跨站请求伪造

    一.CSRF是什么CSRF,全称:Corss-site request forgery,中文名称:跨站请求伪造.CSRF攻击比XSS攻击更具危险性,被安全界称为“沉睡的巨人”. 二.CSRF可以做什么 ...

  7. NGUI动态字体的创建(font maker)

    1,打开font maker 2,在font maker中创建选择动态字体 PS: 1,动态字体相对静态字体来说,动态字体比较消耗性能 2,静态字体是创建在图集中,这也是没那么消耗性能的原因

  8. JVM(18)之 Class文件

    开发十年,就只剩下这套架构体系了! >>>   关于类加载机制的相关知识在前面的博文中暂时先讲那么多.中间留下了很多问题,从本篇博文开始,我们来一一解决.    从我们最陌生而又最熟 ...

  9. 【学习总结】java数据结构和算法-第一章-内容介绍和授课方式

    总目录链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 几个经典算法面试题 算法和数据结构的重要性 几个经典算法面试题 字符串匹配 暴力法:慢 kmp算法:更 ...

  10. how to use epoll with python

    1 import socket, select 2 3 EOL1 = b'\n\n' 4 EOL2 = b'\n\r\n' 5 response = b'HTTP/1.0 200 OK\r\nDate ...