Day28 import模块导入和包的调用
来源:互联网 发布:python gps数据处理 编辑:程序博客网 时间:2024/05/16 10:40
模块概念
在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 loglog.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,osBASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #__file__获取执行文件相对路径,整行为取上一级的上一级目录sys.path.append(BASE_DIR) #添加路径import hellohello.hello1()
模块调用测试
if __name__=='__main__': #__name__方法判断 print('ok')
在一个py模块直接执行print(name)会输出main,表示当前这个文件属于执行文件,如果从其他的py模块中导入一个py模块,执行被导入的py模块中的print(name)会输出被导入的模块的模块名称,那么if判断就不会成功,所以导入的时候不会执行判断内的代码。
主要用在调试功能,即一个模块被调用的时候不执行内容,而自己调试模块的时候可以顺利的执行模块内容。
- Day28 import模块导入和包的调用
- python的模块和包机制:import和from..import..
- Java的导入——import包和类
- python 自定义的模块和导入包
- Node中导入模块require和import
- 导入和调用自己的模块
- Java包的静态导入import static和import的区别
- Java包的静态导入import static和import的区别
- Java包的静态导入import static和import的区别
- Java包的静态导入import static和import的区别
- Kotlin-05.包和导入(package & import)
- Python中import包和模块实例
- from ....import导入其他路径的模块
- import 导入其他路径的模块
- 导入外部包和模块
- python 包和导入模块
- 关于Import 导入模块
- Golang- import 导入包的语法
- 152. Maximum Product Subarray
- Spring的配置
- Day27正则表达式爬虫应用,configparser模块和subprocess模块
- HTML+CSS编写静态网站-21 在css中使用class
- [HDU5822]color
- Day28 import模块导入和包的调用
- 输出字符串的全排列
- sublime配置
- sublime配置
- tomcat是怎么在其(请求时)运行时调用servlet里面的方法
- geotools实现shp数据的缓冲区分析
- 代理模式——静态代理、动态代理、cglib代理
- Linux系统下开发常用命令
- DAY 29 面向对象编程介绍、类和对象