init.py模块(在python2中这个是必须的,在python3中是可选的)

模块的导入

直接导入:import 模块

从模块里导入函数/从包导入模块:from xxx import xxx

导入所有函数:from xxx imoprt * (不推荐)

使用名字动态导入:mod = input("请输入你想要的模块:")

imoprt importlib

变量名(自定义,可以是模块名,包名) = imoprtlib.import_module(mod)

mod是一个字符串(例如mod可以是‘math‘或‘math.sqrt‘直接导入模块的用法)

1.当同一个模块重复导入时,只执行第一次

2.当导入两个同名的模块时,两个都会执行,当前生效的是后一个(若两个都要使用,建议用as取别名)

python获取module方法_下划线

相对导入:使用 . 或 .. 来进行导入

相对导入只能导入包中的模块/子包,同一级目录里的不行

对于当前被执行文件来说:当前执行文件所在目录不是一个包,子目录及更深的目录都是包

python获取module方法_下划线_02

上图中top_levell是main文件,只能在main的同级或子目录下导入,若top level是tr文件,则不能往bao1以外的那些文件导入(运行哪个文件,该文件就是top level)

python下划线:

标识符是用来标识某种对象的名称。以下划线开头的标识符是有特殊意义的。

下划线的特殊含义(模块):

1.以单下划线开头

表示保护对象,不能用 from xxx import 导入包/模块

2.以 双下划线开头

表示私有对象,不能用 from xxx import 导入包/模块

3.以双下划线开头和结尾的

代表Python中特殊方法专用的标识,不建议使用

内置属性:

1)name

当自己执行时,等于name的值为main

当被作为模块导入,等于文件名(不包含后缀, 可含模块名)

2)import

导入模块

3)file

打印模块路径

python模块导入执行的过程:

1.通过sys.path环境变量找到模块文件

2.编译成字节码文件(pyc文件)

3.如果字节码过期了会自动重新生成

4.如果字节码文件已存在则直接导入字节码文件

5.执行模块中的代码来创建所定义的对象

PS:1.对于pyhton模块命名空间作用域, 一定要注意成员变量的范围

2.对于name属性的使用, 防止代码大量加载运行

3.对于模块的导入的几种方式要灵活去运用

4.Python模块的打包

5.软件目录结构