http://hadoop.aura-el.com Python标准库之模块介绍_光环大数据python培训
模块分类 内置模块
内置模块可以理解成当你安装好python环境之后,直接可以使用import导入的就是内置模块,默认模块路径为:C:/Python35/lib,你也可以通过以下方式获取内置模块的路径:
# 导入sys模块 >>> import sys # 最后一个目录就是内置模块的路径 >>> for
n
in
sys.path:
...
print(n) ...C:/Python35/lib/site-packages/pip-8.1.1-py3.5.eggC:/Python35/python35.zipC:/Python35/DLLsC:/Python35/libC:/Python35C:/Python35/lib/site-packages
第三方模块
第三方模块通常是开发者自己编写的模块,然后提交到python官方的库中,这样我们就可以下载安装使用了,默认安装目录为C:/Python35/lib/site-packages,
自定义模块
自己编写的模块 模块的导入方式
光环大数据 http://hadoop.aura-el.com
光环大数据--大数据培训&人工智能培训
http://hadoop.aura-el.com 把一个模块当做成一个整体来进行导入
import sys
从一个模块中导入特定的变量或者是方法
from sys import path
调用的时候直接使用方法名path >>>
'C://Python35//lib//site-packages//pip-8.1.1-py3.5.egg', 'C://Python35//python35.zip', 'C://Python35//lib',
'C://Python35//lib//site-packages']
给导入的模块或者方法起一个别名
from sys import path as path_alias
调用的时候使用别名path_alias >>>
path['',
'C://Python35//DLLs',
'C://Python35',
path_alias['',
'C://Python35//lib//site-packages//pip-8.1.1-py3.5.egg', 'C://Python35//python35.zip', 'C://Python35//lib',
'C://Python35//lib//site-packages']
'C://Python35//DLLs',
'C://Python35',
光环大数据 http://hadoop.aura-el.com
光环大数据--大数据培训&人工智能培训
http://hadoop.aura-el.com 添加默认的环境变量,当前生效
sys.path.append(\"PATH_NAME\")
可以使用imp模块中的reload方法重新载入某个模块的方法,例如下面的实例:
$ cat simple.py #!/use/bin/env pythonprint('Hello, World!')spam = 1
>>> import simpleHello, World!>>> simple.spam1>>> simple.spam += 1>>> import simple>>> simple.spam2>>> import imp>>> imp.reload(simple)Hello, World! 模块导入顺序 先在当前脚本目录寻找有没有与导入模块名称相同的文件,如果有就把这个文件当作模块导入(据不完全统计,这是个坑,测试re模块没有问题,但是测试sys模块就有问题了) 查找模块路径下面有没有对应的模块名 如果没有找到模块名就报错 import是如何工作的? 模块在被导入的时候会执行以下三个步骤: 通过环境变量找到模块文件; 编译成字节码文件,如果有字节码文件则导入字节码文件; 执行模块中的代码来创建所定义的对象; 光环大数据 http://hadoop.aura-el.com 光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 以上的三个步骤只有在程序运行时,模块被第一次导入时才会进行。如果已经导入了这个模块然后再次导入的时候会跳过上面的三个步骤,它会直接提取内存中已经加载的模块对象。Python已经导入的模块会保存在sys.modules字典中。 _X与__all__ 在模块中的所有变量以_开头的都不会被from *所导入 $ cat simple.py #!/use/bin/env python_spam1 = 1spam2 = 1 >>> from simple import *>>> dir()# _spam1没有被导入['__builtins__', '__doc__', '__name__', '__package__', 'spam2'] 相反的__all__列表里面的变量则会被from *所导入,没有在__all__列表里面的变量则不会被导入 $ cat simple.py#!/use/bin/env python__all__ = ['spam2']spam1 = 1spam2 = 1 >>> from simple import *>>> dir()# spam1没有被导入['__builtins__', '__doc__', '__name__', '__package__', 'spam2'] 注意事项 据不完全统计,如果导入的模块的名称在当前目录下有这个文件,那么只会把当前目录下的这个文件当作模块,如下演示: 光环大数据 http://hadoop.aura-el.com 光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 创建一个脚本文件,名称为scripts [root@iZ28i253je0Z ~]# touch scripts.py 内容为 #!/usr/bin/env python# _*_ coding:utf-8 _*_# 导入一个模块reimport re# 输出匹配到的字符串abcprint(re.match('/w+',\"abc\").group()) 执行脚本 [root@iZ28i253je0Z ~]# python scripts.py # 把匹配到的结果abc输出出来abc 创建一个.py文件,名称为re.py [root@iZ28i253je0Z ~]# touch re.py 内容为 #!/usr/bin/env python# _*_ coding:utf-8 _*_# 输出内容modusprint(\"Hello Word\") 再次执行scripts.py脚本 [root@iZ28i253je0Z ~]# python scripts.py # 先输出Hello WordHello Word# 然后再报错没有match这个方法Traceback (most recent call last): File \"scripts.py\ line 6, in 光环大数据 http://hadoop.aura-el.com 光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com print(re.match('/w+',\"abc\").group())AttributeError: 'module' object has no attribute 'match' 这是为什么呢?因为python把re.py当成模块re了,继续往下看: 更改scripts.py文件内容如下 [root@iZ28i253je0Z ~]# cat scripts.py #!/usr/bin/env python# _*_ coding:utf-8 _*_import re re.py文件内容不变,然后我们在执行脚本scripts.py [root@iZ28i253je0Z ~]# python scripts.py Hello Word 看到了吧,他会把re.py文件内的代码拿到scripts.py文件中去执行,这是个坑,最好别踩。 导入当前目录下子目录下的文件 [root@ansheng ~]# tree ././├── modules│ ├── __init__.py│ ├── lib01.py│ └── lib02.py└── scripts.py1 directory, 4 files[root@ansheng ~]# cat scripts.py #!/usr/bin/env python# 导入modules包下面的lib01模块from modules import lib01# 导入modules包下面的lib02模块from modules import lib02[root@ansheng ~]# cat modules/__init__.py #!/usr/bin/env python[root@ansheng ~]# cat modules/lib01.py #!/usr/bin/env python# lib01.py文件会输出\"Hello lib01\"print(\"Hello lib01\")[root@ansheng ~]# cat modules/lib02.py #!/usr/bin/env python# lib02.py文件会输出\"Hello lib02\"print(\"Hello lib02\") 光环大数据 http://hadoop.aura-el.com 光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 执行结果 [root@ansheng ~]# python scripts.py# 会执行modules/lib02.py与modules/lib01.py文件内容Hello lib01Hello lib02 为什么大家选择光环大数据! 大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请大数据领域具有多年经验的讲师,提高教学的整体质量与教学水准。讲师团及时掌握时代的技术,将时新的技能融入教学中,让学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生较快的掌握技能知识,帮助莘莘学子实现就业梦想。 光环大数据启动了推进人工智能人才发展的“AI智客计划”。光环大数据专注国内大数据和人工智能培训,将在人工智能和大数据领域深度合作。未来三年,光环大数据将联合国内百所大学,通过“AI智客计划”,共同推动人工智能产业人才生态建设,培养和认证5-10万名AI大数据领域的人才。 参加“AI智客计划”,享2000元助学金! 【报名方式、详情咨询】 光环大数据网站报名:http://hadoop.aura-el.com 手机报名链接:http:// hadoop.aura-el.com /mobile/ 光环大数据 http://hadoop.aura-el.com 光环大数据--大数据培训&人工智能培训 http://hadoop.aura-el.com 光环大数据 http://hadoop.aura-el.com 因篇幅问题不能全部显示,请点此查看更多更全内容