python基础14 ---函数模块5(模块和包)
模块与包
一、模块
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(模块和包)的更多相关文章
- python基础14 ---函数模块4(configparser模块)
configparser模块 一.configparser模块 1.什么是configparser模块:configparser模块操作配置文件,配置文件的格式与windows ini和linux的c ...
- python基础——filter函数
python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
- 十四. Python基础(14)--递归
十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...
- 八. Python基础(8)--函数
八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x): ' ...
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
- python基础——返回函数
python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...
- python基础——sorted()函数
python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...
- python基础——匿名函数及递归函数
python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...
- python基础之函数详解
Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...
随机推荐
- CHM乱码解决方案!
--希望对您有所帮助,闲暇之余请访问我的网店高清数据线 下载了一个日文的chm帮助文件,打开的时候,发现是乱码, CHM 文档不像IE浏览器一样,右键可以选择字符编码,非常不便. 原因可能是 CHM ...
- react-native Image resizeMode
resizeMode (默认为 cover)该属性用来设置图片的缩放模式,对应值如下 cover 保持图片宽高比,直到宽度和高度都大于等于容器视图的尺寸(参考下图效果)contain 在保持图片宽高比 ...
- react-native 中使用 mobx
1. 介绍 1.1. 原理 React的render是 状态 转化为树状结构的渲染组件的方法而MobX提供了一种存储,更新 状态 的方法React 和 MobX都在优化着软件开发中相同的问题.Reac ...
- Hbase 目录树
转自 http://www.cnblogs.com/nexiyi/p/hbase_on_hdfs_directory.html 总所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系 ...
- ubuntu安装firefox的flash插件
1.下载插件 https://get.adobe.com/cn/flashplayer/ 下载tar.gz文件 2.解压缩 切换到下载目录,如果是默认下载的话,用 cd ~/下载/解压缩下载的文件 t ...
- angularjs中的时间格式化过滤
本地化日期格式化: ({{ today | date:'medium' }})Nov 19, 2015 3:57:48 PM ({{ today | date:'short' }})11/19/15 ...
- js识别不同浏览器
检測浏览器.注意浏览器推断顺序,主要是基于userAgent做推断. //检測浏览器 var client = function(){ var engine = { ie:0, ...
- Android中多线程编程(三)Handler更新UI的方式
Handler更新UI的方式和原因以及遇到的问题 1.方式: 仅仅能通过Handler来更新UI. 代码例如以下: package com.chengdong.su.handlerdemo; impo ...
- Oracle直接路径加载--append的深度解析
㈠ 直接路径加载和buffer cache 直接路径插入的数据不经过buffer cache,从PGA直接把数据格式化成Oracle块 然后由普通的Oracle ...
- oracle查看用户有哪些权限和角色
select * from dba_sys_privs t where t.grantee='HR';select * from dba_role_privs t where t.grantee='H ...