模块概念

在Python中,一个.py文件就称之为一个模块(Module)。使用模块组织代码,最大的好处是大大提高了代码的可维护性

模块一共三种:python标准库、第三方模块、应用程序自定义模块。

相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。

模块导入

import语句

 import module1[, module2[,... moduleN]

使用import语句时候,Python解释器通过sys.path的路径搜索。

每次import的时候,都会相应的开辟内存空间存放被import的内容,但是与调用import的文件开辟的内存空间相互独立。例如import foo.py在新建的名称空间里执行源文件(foo.py)代码时,所有对全局名称空间的引用或修改,都是以foo.py为准。

注意:

一个模块可以在当前位置import多次,但是只有第一次导入会执行内容,其他的都为引用内存

更改调用名称:

 import logging as log
log.critical("www")

from...import语句

 from modname import name1[, name2[, ... nameN]]

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

包的调用

为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录(文件夹),而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字。调用包就是执行包下的__init__.py文件。

跨包调用(当前目录下有modulepack1包):

 from modulepack1[.modulepack2] import module

如果当前目录下能够找到要调用的包,可以直接from包import模块,如果当前目录找不到要调用的包,需要向sys.path添加包的所在绝对路径。

import一个包名,就等于执行了这个包下的__init__文件。

示例:

在nod1里import  hello是找不到的,需要手动添加包路径,如果找到那是因为pycharm给加了不必要的路径,以命令行执行为准。

 import sys,os
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  #__file__获取执行文件相对路径,整行为取上一级的上一级目录
sys.path.append(BASE_DIR)  #添加路径
import hello
hello.hello1()

模块调用测试

 if __name__=='__main__':  #__name__方法判断
print('ok')

在一个py模块直接执行print(__name__)会输出__main__,表示当前这个文件属于执行文件,如果从其他的py模块中导入一个py模块,执行被导入的py模块中的print(__name__)会输出被导入的模块的模块名称,那么if判断就不会成功,所以导入的时候不会执行判断内的代码。

主要用在调试功能,即一个模块被调用的时候不执行内容,而自己调试模块的时候可以顺利的执行模块内容。

Python开发基础-Day16import模块导入和包的调用的更多相关文章

  1. python基础之import模块导入和包的调用

    模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...

  2. Python开发基础-Day13模块2

    sys模块 sys模块提供了一系列有关Python运行环境的变量和函数. #重点记忆 sys.argv #命令行参数List,第一个元素是程序本身路径 sys.exit(n) #退出执行的程序未见,正 ...

  3. Python开发基础-Day12模块1

    time模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月 ...

  4. Python开发基础-Day20继承实现原理、子类调用父类的方法、封装

    继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...

  5. Python 入门基础13 --模块与包

    本节内容: 一.模块及使用 1.模块及使用 2.起别名.from导入 3.自执行与模块 二.包的使用 2.1 包中模块的使用:import 2.2 包的嵌套 2.3 包中模块的使用:from ...i ...

  6. Python入门基础学习(模块,包)

    Python基础学习笔记(五) 模块的概念:模块是python程序架构的一个核心概念 每个以拓展名py结尾的python源代码文件都是一个模块 模块名同样也是一个标识符,需要符合标识符的命名规则 在模 ...

  7. python之模块导入和包

    一.何为模块 1.一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 2.模块目的和函数,对象等一样,是为了代码的复用性而存在的.即一个py程序写了很多功能,也可 ...

  8. Python网络编程基础 struct模块 解决黏包问题 FTP

    struct模块 解决黏包问题 FTP

  9. python学习日记(模块导入)

    什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...

随机推荐

  1. 【51NOD】1096 距离之和最小

    [算法]数学 [题解] 其实就是求中位数,奇数个点就是最中间的点,偶数个点就是最中间两个点和它们之间的区域皆可(所以偶数不必取到两点正中央,取两点任意一点即可). 我们可以想象现在x轴上有n个点,我们 ...

  2. 【洛谷 P3402】 【模板】可持久化并查集

    题目链接 可持久化并查集,就是用可持久化线段树维护每个版本每个节点的父亲,这样显然是不能路径压缩的,否则我们需要恢复太多状态. 但是这并不影响我们启发式合并,于是,每次把深度小的连通块向深度大的上并就 ...

  3. WinRAR分割超大文件

    在自己的硬盘上有一个比较大的文件,想把它从网上通过E-Mail发送给朋友时,却发现对方的收信服务器不能够支持那么大的文件……,这时即使用ZIP等压缩软件也无济于事,因为该文件本身已经被压缩过了.于是许 ...

  4. bzoj 3197 DP

    这道题我们可以看成给定两个黑白树,可以修改其中一棵树的颜色,问最少修改多少颜色可以使两棵树同构. 首先我们知道在树的同构中树上最长链中点(如果是偶数的话就是中间两个点)是不变的,我们把这个点叫做树的重 ...

  5. js jq插件 显示中文时间戳 刚刚 N分钟前 N小时前 今天 上午 下午 日期格式化

    注:页面需提前引用JQ ; $.fn.extend({ /* ** notes: 获取13位时间戳的简单操作 ** new Date('2018-02-01 15:10:00').getTime() ...

  6. 大话Spring Cloud

    研究了一段时间Spring Boot了准备向Spring Cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统 ...

  7. SD 模拟sip 读写子程序

    void simulate_spi_write_byte(u8 data){ u8 kk; SPI3_CS(0); SPI3_SCK(0); delay_us(1); //???spi???1/2us ...

  8. 己动手创建最精简的Linux

    己动手创建最精简的Linux http://blog.sina.com.cn/s/blog_71c87c170101e7ru.html 首次 LFS 搭建全过程 http://zmyxn.blog.5 ...

  9. Centos. Mac 通过nfs 搭建共享目录

    centos 关闭fiewalld,selinux yum install yum install nfs-utils portmap vim /etc/exports 文件写入时使用anonuid用 ...

  10. JS实现判断滚动条滚到页面底部并执行事件的方法

    需要了解三个dom元素,分别是:clientHeight.offsetHeight.scrollTop. clientHeight:这个元素的高度,占用整个空间的高度,所以,如果一个div有滚动条,那 ...