广州Python,Java小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://www.chipscoco.com/?cate=6
18.2.1 sys.modules
执行import进行模块导入以后,Python解释器会自动将导入的模块名写入到内置模块sys的modules属性中。 sys.modules是一个字典对象,键名为模块名。
sys模块是Python中的内置模块,在18.4节中会详细的介绍Python中的内置模块。
现在我们进入windows命令行,切换到chapter18所在的目录,然后执行python进入交互模式:
>>> import sys>>> "utils" in sys.modulesFalse>>> import utils>>> "utils" in sys.modulesTrue
在交互模式中首先导入了sys模块,然后执行"utils" in sys.modules,查找是否已导入utils模块,由于未执行导入,所以返回值为False。再次执行import,导入utils模块,此时再通过sys.modules进行查找时,返回值为True。
18.2.2 sys.path
模块导入成功以后,Python会在sys.modules中进行记录,以避免模块的重复导入。在导入的过程中,会首先在sys.modules中进行查找,如果查找失败,按"就近原则",会首先在当前目录进行查找,查找是否有同名的模块脚本,如果又查找失败呢?Python解释器接下来会去环境变量PYTHONPATH中进行查找,最后再去Python的系统目录中进行查找。
PYTHONPATH的配置同环境变量PATH,对环境变量配置不是很熟悉的同学,可以复习第四章中的学习内容。
不论是当前目录,还是PYTHONPATH中的路径,Python在当前执行环境中,会将所有的查找路径写入到sys模块的path属性中。sys.path是一个列表类型, 我们现在进入交互模式,在交互模式中进行验证:
>>> import sys>>> type(sys.path)<class 'list'>>>> sys.path['', 'C:\\Users\\chipscoco\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'C:\\Users\\chipscoco\\AppData\\Local\\Programs\\Python\\Python37\\DLLs', 'C:\\Users\\chipscoco\\AppData\\Local\\Programs\\Python\\Python37\\lib', 'C:\\Users\\chipscoco\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\chipscoco\\AppData\\Roaming\\Python\\Python37\\site-packages', 'C:\\Users\\chipscoco\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages']
从交互模式的输出可知,sys.path是一个列表类型,sys.path保存了所有查找路径,Python解释器在sys.path中,会按从左到右的顺序进行模块查找。sys.path中的第一项为空字符串,表示当前目录。
sys.path是一个列表类型,可以在运行时进行修改。
模块如果最终查找失败,Python会抛出ModuleNotFoundError的错误异常。我们现在进入Python交互模式,在交互模式中导入不存在的A模块。
>>> import ATraceback (most recent call last):File "<stdin>", line 1, in <module>ModuleNotFoundError: No module named 'A'
如果查找成功,Python解释器会对模块进行编译,将其转译成字节码。
18.2.3 模块的编译与执行
Python是一种解释型语言,解释性语言与C/C++等编译型语言的一个很重要的区别在于,Python解释器会先将Python程序转译成中间代码,这里的中间代码是Python字节码。Python将模块转译成Python字节码以后,将字节码载入到内存中,在内存中对字节码逐条地解释执行。
程序运行结束以后,在windows系统中会在模块的目录下生成一个__pycache__的目录,目录下面的pyc文件即为python字节码。在Linux系统中会直接在模块的目录中生成pyc文件。如果未对模块进行修改,Python下次进行模块导入时,会直接使用字节码文件,这样就提升了程序的执行效率。
18.2.4 知识要点
(1) sys.modules是一个字典对象,字典对象的键名是一个字符串类型,对应的是模块的模块名。通过sys.modules可以防止模块的重复导入。(2) Python在模块的查找过程中,遵循的是"就近原则", 会首先在当前目录进行查找,查找是否有同名的模块脚本,接着分别去PYTHONPATH以及Python的系统目录中进行查找。(3) sys.path是一个列表类型,保存了模块的所有查找路径。
18.2.5 最具实力的小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料: