网上做室内设计的网站,酒水包装设计公司,杭州动漫设计公司最新招聘,镇江平面设计模块的基本概念#xff1a;模块是程序#xff0c;它就是一个扩展名为.py的python程序。因此对于一个.py的python文件而言#xff0c;既可以把它当作程序来执行#xff0c;也可以将它作为模块引入。导入一个模块时#xff0c;python解释器会先自动在当前路径下搜索要导入的…模块的基本概念模块是程序它就是一个扩展名为.py的python程序。因此对于一个.py的python文件而言既可以把它当作程序来执行也可以将它作为模块引入。导入一个模块时python解释器会先自动在当前路径下搜索要导入的模块如果没有找到则会自动到python标准模块安装路径(python默认自带的)中搜索如果还没找到则报错ModuleNotFoundError。在sys模块的path属性中可以看到python自动导入的所有路径(以列表的形式存放)。sys的path属性中除了本来就有的python系统自带的标准模块的路径之外还会将当前执行文件的路径临时的加到path属性中。所以python解释器可以在当前路径中找模块事实上跟同级路径的概念并没有关系而是python解释器将执行文件的所在路径临时的加到了path属性中且放在了第一个位置。除了python可以自动寻找的路径之外我们还可以指定路径并将路径告诉python解释器。因此对于我们自己写的文件要想可以作为模块被导入有三种方法将模块写在当前目录中python会直接自动找到将模块发布并安装到python标准模块安装的路径中python也可以自动找到将我们自己写的模块路径append到sys模块的path属性列表中即告诉python解释器我们自定义的模块的路径位置。执行了.py文件后会发现目录中多了一个__pycache__的目录这个目录中存放着执行.py文件后生成的文件中的import导入的模块的编译文件下次再执行该文件时遇到import导入的相同模块时将直接执行此编译文件不再重新编译相同的模块节省执行时间。__all__在模块中的作用当使用“ from 模块名 import * ”的方式从模块中导入所有内容时模块中以_或着__开头的私有属性、函数或者类将不会被导入因为以这种方式导入模块中的内容时导入的将是模块中__all__属性中的内容。在默认情况下私有属性、函数或者类是不会被放到__all__属性中的。当然我们可以自定义模块的__all__属性中的内容让模块中的哪些属性、函数或者类(包括私有的)可以被导入。如果是通过“ import 模块名 ”的方式导入模块则可以用“ 模块名. ”的方式来访问模块中的所有属性、函数和类(包括私有的)。因为只有通过“ from 模块名 import * ”的方式才会导入模块中__all__中的内容。模块中还有一个__file__属性它可以告诉我们此模块的位置(路径)。当一个.py文件作为模块被导入时实际上会执行一次该文件。我们导入模块时只是想要模块中的类、函数或者变量等而并不是要真正的去执行该文件。所以在文件中被执行的代码或者要调试的代码应写在if __name__ ‘__main__’:中。当文件作为模块导入时则不会执行if __name__ ‘__main__’中的内容当文件作为.py文件执行或者调试时就会执行if __name__ ‘__main__’中的内容。因为文件作为模块导入的时候被执行时__name__得到的是文件名路径的字符串直接作为.py文件执行时__name__得到的时’__main__’字符串。包和库python标准库中包含多个包每个包中又有多个模块包即是目录(文件夹)用来存放模块。当要引用某个包中的模块时需要在该包中放一个__init__.py文件。__init__.py可以只是一个空文件将它放在某个目录中就可以使得该目录中的其它.py文件能够作为模块被引用。注意每一个包中的__init__.py文件是必须存在的否则Python就会把这个目录当成普通目录(文件夹)而不是一个包。__init__.py可以是空文件也可以有Python代码因为__init__.py本身就是一个模块而它的模块名就是对应包的名字。调用包就是执行包中的__init__.py文件。