模块就是Python文件,里面定义了很多的函数、类、变量 一个完整大型的python程序是由模块和包的形式组织起来的,可见模块在python中的重要性。 python包实际上就是一个目录 包结构的目录里可以有一个__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取别名)
相对导入:使用 . 或 .. 来进行导入 相对导入只能导入包中的模块/子包,同一级目录里的不行 对于当前被执行文件来说:当前执行文件所在目录不是一个包,子目录及更深的目录都是包 上图中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.软件目录结构