Python学习笔记(12)-Python模块与包示例
来源:互联网 发布:github怎么下载软件 编辑:程序博客网 时间:2024/05/22 15:52
一,概念
本篇主要介绍Python代码的组织体系——模块与包。
作为一种解释型的语言,Python也不是所有的代码都写在一个.py文件里。这样缺点太大了,比如可能导致一个文件代码太多难以阅读;比如每次写代码都要论成败从头再来,没法引用之前写好的.py文件的内容。
所以,Python语言设计者为了组织代码,提出了模块和包的概念。所谓的模块,其实就是每个.py文件的内容。而所谓的包,就是.py文件所在的目录。
模块很容易区分哦.py文件后缀跟.c、.cpp、.java完全不同,Python解释器可以很明确的知道哦,这个.py文件就是我们Python家族的一个模块。
但是包捏,就是一个目录,可能这个鸟目录程序员本来就没给它什么具体含义,只是放一些说明文档和图片内容。Python语言本身是无法区分这个目录是普通的存放文件的目录,还是作为Python的包存在。为了标志某个目录就是咱Python的包,可以在该目录下放一个__init__.py
,如果Python解释器发现某个目录下有个文件名为__init__.py
,也不用管该文件的内容是啥,就会将该目录看作为包。
OK,本篇就以示例的方式来说明下模块和包的具体运作方式。
二,同目录下模块间调用示例
随意建立一个目录temp(不用管该目录放在哪个目录下),在目录下放置两个模块:function.py用来放置自定义函数,main.py用于调用funciton.py模块中的函数并输出测试结果。注意本次并未在temp目录下放置_init_.py文件
#main.pyimport functions#导入模块c=functions.add(1,2)#调用导入模块的函数print(c)#成功输出3print(functions.myNum)#成功输出4
import functions#导入模块c=functions.add(1,2)#调用导入模块的函数print(c)#成功输出3print(functions.myNum)#成功输出4
除了直接导入整个模块,还可以选择性的导入,例如main.py可以这样写:
#main.pyfrom functions import add,myNum#导入模块部分内容c=add(1,2)#调用导入模块的函数print(c)#成功输出3print(myNum)#成功输出4
需要注意一下这两种方式的区别:直接导入整个模块后,Python是将模块名作为导入模块的指针(PS:可以认为模块名变量保存了导入模块加载到内存后的地址),所以每次调用都需要前缀模块名。而导入模块部分部分内容的方式是将导入模块的具体内容的名(比如函数名、变量名)作为导入部分内容的指针,所以可以直接使用函数名、变量名。总结起来就是,import了谁,谁就被本模块认识了。
三,跨目录模块间调用示例
在temp下建立新目录dir1,将main.py文件放于temp根目录下,将functions.py和__init__.py
放于dir1下。
代码如下:
#目录temp下dir1下functions.pydef add(a,b):#定义add()函数 return a+bmyNum=4#定义一个变量#目录temp下main.pyimport dir1.functionsc=dir1.functions.add(1,2)#调用导入模块的函数print(c)#3print(dir1.functions.myNum)#4
运行之后成功输出3和4,当然在windows下包和模块的管理远非这么简单,暂时我们知道如何调用自定义的包和模块即可。
- Python学习笔记(12)-Python模块与包示例
- 【Python学习笔记】-模块、包
- python学习笔记(四)之模块与包
- Python学习笔记 8--文件的管理、模块与包
- python学习笔记13(模块、包)
- Python学习之模块与包
- python模块与包
- Python 模块与包
- python 模块与包
- python 模块与包
- python模块与包
- python模块与包
- python---模块与包
- python-模块与包
- python 模块与包
- Python-------模块与包
- Python学习笔记12:Python模块
- python学习笔记四--类与模块
- 第17篇 零散记录
- JAVA面试中问及HIBERNATE与 MYBATIS的对比
- 烟花爆炸
- 服务器运维整理
- SpringMVC Controller介绍及常用注解
- Python学习笔记(12)-Python模块与包示例
- RNN时间序列预测(2)-Tensorflow入门,RNN操作
- wm_concat函数
- ajax跨域 后台允许跨域访问
- 用javascript实现类似jquery的ajax请求
- 圆形头像CircleImageView源码浅析
- tableau资源
- 手机WEB页面打开QQ聊天
- 学习List的几种遍历方法