十九、模块和包
什么叫做包:简单点说就是带_init_.py文件的文件夹就是包。当我们去调用这个包的时候其实是优先执行了包里面的_init_文件。而包里面的其他的py文件就是模块
1.当我们需要直接调用某模块的时候,而又不确定可不可以直接调用时,可以这样操作
import sys
print(sys.path)
查看这个列表的第一项,你当前所在的py文件的文件夹目录就是第一项,而这个文件夹目录下的模块和包就是你可以调用的。
2。模块和模块之间的互相调用时,只会调用一次,而不会发生重复调用,因为模块一旦被调用成功,就会加入到sys.modules这个字典中,也就是说你在调用模块时,首先python解释器会自动的去找sys.modules这个字典中有没有,有的化就直接用了,不会再去调用一次,所以说模块只会调用一次。
3.跨包调用问题,就是我他妈的纠结了很久的如何挎包调用模块,这他妈的个根本就做不到,我在这个地方纠结了大量的时间。现在我总算是明白了,现在我写出来提醒我自己,原因如下:
这是一个路径图,这里我想从c.py里面调用b.py 这是不可以的骚年,这样调用就是不行,别问为什么就是不行,python就是这么规定的,所以记住就行了!!!!!!
但是我就想执行啊怎么办呢。。
每当我们遇到这种问题的时候,我们要立马想起两个问题1 你所在的py文件的sys.path的第一个文件夹是什么 2 执行一个包的时候首先要执行这个包下面的_init_文件 。骚年你记住了吗 这两个东西????
去哦们扯了半天还是没有说该怎么办。。。。我现在就来告诉你!!!!这时候我们仔细观察,发现c.py和b.py分别在mode3 和mode2里面 而这两个包又都在mode1里面 这时候我们只能,对就是只能,只能在和mode1同级别的py文件里面通过执行一系列的关系来让c.py执行b.py。至于具体怎么操作,很简单,就是在每个包里面的_init_文件里写一些调用模块就行了。
4.绝对路径的模块调用,写法就是在每个包的ini文件里面写清楚调用模块的路径方式,然后到和包同一目录下的py文件里面去执行,但是这样有问题比如说上图中的,mode1的路径发生变化,所有包的init文件里面的路径都要改,所以就有了相对路径的调用。
5。相对路径的调用,就是和绝对路径的写法是一样的就是把当前py文件的目录换成 . 父目录换成.. 就行了,还有就是前面说的跨目录调用问题,也是只能在外面实现,原因是因为一个py文件不能既当模块执行,又当脚本执行。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
深入理解虚拟机之垃圾回收
《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版》读书笔记与常见面试题总结 本节常见面试题(推荐带着问题阅读,问题答案在文中都有提到): 如何判断对象是否死亡(两种方法)。 简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。 垃圾收集有哪些算法,各自的特点? HotSpot为什么要分为新生代和老年代? 常见的垃圾回收器有那些? 介绍一下CMS,G1收集器。 Minor Gc和Full GC 有什么不同呢? 1 概述 首先所需要考虑: 那些垃圾需要回收? 什么时候回收? 如何回收? 当需要排查各种 内存溢出问题、当垃圾收集称为系统达到更高并发的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 2 对象已经死亡? 堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断那些对象已经死亡(即不能再被任何途径使用的对象) 2.1引用计数法 给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加1;当引用失效,计数器就减1;任何时候计数器为0的对象就是不可能再被使用的。 这个方法实现简单,效率高,但是目前主流的...
-
下一篇
day06_JDBC学习笔记
============================================================ 一、JDBC概述 为什么要使用JDBC? JDBC:JavaDataBaseConnectivity,是SUN公司提供的一套操作数据库的标准规范(技术)。 JDBC与数据库驱动的关系:接口与实现的关系。 JDBC规范(掌握四个核心对象): DriverManager类:用于注册驱动(创建连接对象)。java.sql.DriverManager; Connection接口:表示与数据库创建的连接 。java.sql.Connection; Statement接口:操作数据库sql语句的对象,并返回相应结果的对象。java.sql.Statement; preparedStatement接口:预编译对象,是Statement对象的子类。用于解决sql的注入问题。实际用的是这个类。java.sql.PreparedStatement; ResultSet接口:结果集或一张虚拟表(客户端存表数据的对象)。java.sql.ResultSet; 开发一个JDBC程序的准备...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL数据库在高并发下的优化方案
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker容器配置,解决镜像无法拉取问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能