python3学习--(6)包、模块、函数与变量作用域

1.python项目的组织结构:包(可以简单理解成文件夹) -- 模块(可以简单理解成文件) -- 类 -- 函数,变量(函数和变量都是类本身的特性);

2.模块,物理表现就是一个.py的文件;模块下面不光是只写类,也可以写一些函数、变量和逻辑;

3.区分不同包中的相同模块:需在模块前面加上包的名字,例如:

4.包下面还可以包含子包,和包平级的也可以是模块,模块和子包也可以是平级的关系;

5.包在物理表现上可以是一个文件夹,但是一个文件夹不等同于一个包;

6.python如何区分包和文件夹:包中有个特定的文件:__init__.py文件,__init__.py本身也是一个模块;

7.__init__模块的名字就是其所在包的名字,例如:

8.python中导入的语法有两个:(1)import   moudle_name:导入另外一个模块moudle_name,想要使用模块下面的某个变量/函数,则用“模块名.变量名”的形式来表示,例如:;python是解释型语言,当Python运行代码时,会遵守先后的顺序,如果前面的代码变成,就会报错,所以一定要先定义,再引用;

9.如果新建一个t,C7在t的目录下,则引用时需要写完整的路径(命名空间):

10.import导入的是一个模块,所以不能直接导入模块下面的变量,例如:,会报错;为了使代码更简洁,简化路径的方法,可以使用关键字as:,代码中的m可以作为一个标识符;

11.使用import的好处就是可以清楚的看到引用的变量,以及这些变量所在的模块和包;

12.python中导入的语法有两个:(2)from  moudle  import  a,def:使用from 和import的结合,来引用模块下的变量/函数,例如:,对于引用的模块中有多个变量,用import *:

13.使用*进行导入,只导入想要的变量,需要在被引用的模块中加入__all__,例如:c7里面写入,c8里面写入,能输出a和c的值,但是d会报错,没有被定义,因为__all__ = ['a','c'],所以d没有被导入进来。像a和c这样的变量,叫做模块的内置变量,或者叫做模块的内置属性;

14.如果想要导入的变量特别多,可以使用换行:,但是不推荐用\,建议用括号:

15.__init__.py文件的作用:最基本的作用就是当一个包被导入的时候,__init__.py的文件最先被执行,而且被python自动去执行,不需要引入,例如:在__init__.py文件中加入代码:,在c9文件中写入代码并运行:,输出的结果:

16.通过__all__变量,不仅可以决定哪些变量被导入,还可以决定哪些模块被导入。例如:在__init__.py文件写入:,c7文件:,c8文件:,c9文件导入包中所有的模块,并分别打印c7和c8文件中的变量:,运行结果就是只打印出c7模块中的变量a,值为2,c8文件报错,因为没有被定义;

17.__init__.py文件还可以做批量导入:__init__.py文件:,c10文件:,只需要在c10模块里引入包,包自动会自动执行__init__.py文件,所以会自动批量导入模块;

18.注意事项:(1)包和模块不能被重复的导入:__init__.py文件:,c10文件:,c11文件:,c10文件和c11文件都要导入__init__.py文件中的模块,会存在性能问题;(2)避免循环导入:p1文件:,p2文件:,运行p1文件和p2文件都会报错,因为会造成循环导入;

19.当导入某个模块时,就会执行这个模块中的代码,无论在一个应用程序中导入多少次同一个模块,这个模块在导入阶段,只会执行一次;

猜你喜欢

转载自blog.csdn.net/weixin_38808167/article/details/89457893