1 什么是模块?

常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。

但其实import加载的模块分为四个通用类别:

1 使用python编写的代码(.py文件)

2 已被编译为共享库或DLL的C或C++扩展

3 包好一组模块的包

4 使用C编写并链接到python解释器的内置模块

2),模块的执行:import,每个模块都是一个独立的名称空间。

模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,它们只在模块名第一次遇到导入import语句时才执行(import语句是可以在程序中的任意位置使用的,且针对同一个模块很import多次,为了防止你重复导入,python的优化手段是:第一次导入后就将模块名加载到内存了,后续的import语句仅是对已经加载大内存中的模块对象增加了一次引用,不会重新执行模块内的语句)。

3)1,from:而from 语句相当于import,也会创建新的名称空间,但是将my_moudle中的名字直接导入到当前的名称空间中,在当前名称空间中,直接使用名字就可以了。

1 from my_moudle import read1,read2

注意:

当你调用模块时,在你当前使用的页面中不能出现和模块,相同的对象,名称。

不然会存在一个覆盖的情况,而且当你覆盖以后,后面你调用的模块会永久失去效用,所以尽量不要取和模块相同的名称

PS:当你运行一个模块的时候,模块会先加载到内存,那个时候你是不能更改的,

2.from spam import * 把spam中所有的不是以下划线(_)开头的名字都导入到当前位置,

大部分情况下我们的python程序不应该使用这种导入方式,因为*你不知道你导入什么名字,

很有可能会覆盖掉你之前已经定义的名字。而且可读性极其的差,在交互式环境中导入时没有问题。

PS:from spam import *:是把所有的spam里的内容都加载到内存中,并且随时可以调用,而加载的位置是当前你输入这段代码的位置。

4)

考虑到性能的原因,每个模块只被导入一次,放入字典sys.module中,如果你改变了模块的内容,你必须重启程序,python不支持重新加载或卸载之前导入的模块,

有的同学可能会想到直接从sys.module中删除一个模块不就可以卸载了吗,注意了,你删了sys.module中的模块对象仍然可能被其他程序的组件所引用,因而不会被清除。

特别的对于我们引用了这个模块中的一个类,用这个类产生了很多对象,因而这些对象都有关于这个模块的引用

importtime,importlibimportaa

time.sleep(20)#importlib.reload(aa)

aa.func1()

在20秒的等待时间里,修改aa.py中func1的内容,等待test.py的结果。

打开importlib注释,重新测试

结果:是不会改变,因为当你运行的时候,系统已经把代码加载到内存,在内存中是不会被修改的。

如果用reload的话,在reload()里面加的是被调用的模块名,另外在修改以后要ctrl + s保存一下,然后才能改。

5):__name__

我们可以通过模块的全局变量__name__来查看模块名:

当做脚本运行:

__name__ 等于'__main__'

当做模块导入:

__name__= 模块名

作用:用来控制.py文件在不同的应用场景下执行不同的逻辑

if __name__ == '__main__':

__name__:__name__在被调用的模块中,显示的是被调用模块的名字(比如:我被调用的模块名字是verw,那我调用的print(__name__)显示的是verw),而在调用的程序中显示的是__main__。

6):在定义一个变量名的时候,变量名尽量不要和内置函数,还有模块名重复,不然会产生错误。

7):包:含义以及注意事项。   (

相对路径在同一个包内部能用,专门提供给别人用。

绝对路径,是全部地方都能用,但是当里面的一个路径一遍就会全部改变,

所以相对来说,以后多用相对路径。

import *的,要用‘__all__’=‘ ’接收

)

1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警觉:这是关于包才有的导入语法

2. 包是目录级的(文件夹级),文件夹是用来组成py文件(包的本质就是一个包含__init__.py文件的目录)

3. import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件

强调:

1. 在python3中,即使包下没有__init__.py文件,import 包仍然不会报错,而在python2中,包下一定要有该文件,否则import 包报错

2. 创建包的目的不是为了运行,而是被导入使用,记住,包只是模块的一种形式而已,包即模块

注意事项:1.关于包相关的导入语句也分为import和from ... import...两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:

凡是在导入时带点的,点的左边都必须是一个包,否则非法。可以带有一连串的点,如item.subitem.subsubitem,但都必须遵循这个原则。2.对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。3.对比import item 和from item importname的应用场景:

如果我们想直接使用name那必须使用后者。

2:包的调用-----绝对导入和相对导入

我们的最顶级包glance是写给别人用的,然后在glance包内部也会有彼此之间互相导入的需求,这时候就有绝对导入和相对导入两种方式:

绝对导入:以glance作为起始

相对导入:用.或者..的方式最为起始(只能在一个包中使用,不能用于不同目录内)

例如:我们在glance/api/version.py中想要导入glance/cmd/manage.py

在glance/api/version.py#绝对导入

from glance.cmd importmanage

manage.main()#相对导入

from ..cmd importmanage

manage.main()

注意:特别需要注意的是:可以用import导入内置或者第三方模块(已经在sys.path中),但是要绝对避免使用import来导入自定义包的子模块(没有在sys.path中),应该使用from... import ...的绝对或者相对导入,且包的相对导入只能用from的形式。

PS:

也就是说,一个包内的两个不同文件,不要用import直接导入,因为a文件import另b文件的时候,其c文件就调用不了a。

(1)绝对导入:

也就是from导入,从一个包调用另一个包。

(2)相对导入:

也就是用.。和。。导入,。一个点的时候表示同级的目录,。。两个点的时候表示上一层目录。

PS:用.和..表示的时候,同一个包内是不能调用的,即使调用了也没有用。

8):Mysql与Oracle区别

1.  Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高。

2. Oracle支持大并发,大访问量,是OLTP最好的工具。

3. 安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。

4.Oracle也Mysql操作上的一些区别

mysql for oracle_模块与包 Mysql与Oracle区别相关推荐

  1. mysql榨包是什么意思_模块与包 Mysql与Oracle区别

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

  2. mysql的cj是什么包,Mysql版本java问题(com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver)

    老版本com.mysql.jdbc.Driver已弃用 String url1 = "jabc:mysql://127.0.0.1:3306/test"; String url1 ...

  3. Python类、模块、包的概念及区别

    类 类的概念在许多语言中出现,是面向对象编程的基础,很容易理解.抽象出不同物体的共同特征,根据相似性原则,把彼此相似的物体归于相同的类概念, 它将数据和操作进行封装,以便将来的复用. 模块 模块,在P ...

  4. python模块与类的区别_Python类、模块、包的概念及区别

    类 类的概念在许多语言中出现,是面向对象编程的基础,很容易理解.抽象出不同物体的共同特征,根据相似性原则,把彼此相似的物体归于相同的类概念, 它将数据和操作进行封装,以便将来的复用. 模块 模块,在 ...

  5. python包和库的区别_python中模块、包、库的区别和使用

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

  6. python连接mysql用哪个模块_Python连接MySQL数据库之pymysql模块使用

    Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服 ...

  7. 马哥数据库mysql笔记_马哥笔记-mysql

    反关系模型:NoSQL MongoDB Redis HBase MySQL版本: Community Edition Enterprise Edition 软件包格式: mysql, mysql-se ...

  8. python3安装mysql模块_Python安装MySQL库详解,步骤及错误的解决方法

    前面我们介绍的Python网络爬虫通常将抓取的数据存储至TXT或CSV文件,而当数据量增加之时,就需要将其存储至本地数据库了.Python访问数据库需要对应的接口程序,我们可以把接口程序理解为Pyth ...

  9. 【php毕业设计】基于php+mysql+apache的网络数据包分析工具设计与实现(毕业论文+程序源码)——网络数据包分析工具

    基于php+mysql+apache的网络数据包分析工具设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于php+mysql+apache的网络数据包分析工具设计与实现,文章末尾附有本毕业设 ...

最新文章

  1. 香港科技大学谢知遥教授实验组招收机器学习全奖博士生
  2. UEBA 学术界研究现状——用户行为异常检测思路:序列挖掘prefixspan,HMM,LSTM/CNN,SVM异常检测,聚类CURE算法...
  3. 第三讲、Linux常用命令
  4. (转)科学是怎样产生的
  5. CentOS5.11安装Mac桌面主题
  6. [工具-004]如何从apk中提取AndroidManifest.xml并提取相应信息
  7. 3分钟学会python_3分钟学会,学会用Python正确读取大文件
  8. 每天一个linux命令
  9. 18.链表管理内存实现c语言自动释放内存
  10. 【20211005】Praat 基本用法
  11. 在线URL编码加密工具
  12. (1) racecar零件购买
  13. 19检查手机sim卡是否变更
  14. 7-6 吃鱼还是吃肉 (20 分)
  15. 9、osg3.2.1中漫游
  16. Codeforces Round #693 (Div. 3)部分题解
  17. (电商)唯品会双十一促销活动复盘——数据分析
  18. c语言xml库调用方法,c语言如何调用xml的接口函数?
  19. Fortran学习杂记(一)
  20. 以let开头的祈使句用法归纳

热门文章

  1. 什么样的环境才是最理想的工作环境呢?
  2. [软件]提高日常操作电脑的效率
  3. 用Node操作Firebird。
  4. 基于Jenkins 快速搭建持续集成环境
  5. 修改 jtable 显示格式
  6. 微软下周将发布重磅安全公告 修复40个漏洞
  7. php mysql旅游管理系统毕业设计网站作品
  8. 【毕业设计】JAVA文件压缩与解压缩实践(源代码+论文)
  9. python高阶函数_python_bomb----高阶函数
  10. mysql.8.0.13ZIP安装教程_关于mysql 8.0.13zip包安装方法