模块和包

模块

import

  1. 模块就是一个.py文件
  2. 命名规则跟随变量命名规则
  3. 使用import导入
    • 找到模块
    • 创建模块的命名空间
    • 把文件中的名字都放到命名空间
  4. 模块不会被重复导入
    • sys.modules() 查看当前所有导入的模块
    • 如果当前列表中有导入模块则不继续导入
    • 如果当前列表中没有导入模块则去sys.path中去寻找
    • 找到后导入,找不到报错
  5. 导入模块就会直接执行模块内的代码
  6. 模块里的函数用模块名.函数名()调用
  7. 先导入内置函数,再导入扩展的,再导入自定义的模块

as- 给模块起别名

  • import module as other_name

from- 模块中导入变量名

  • from module import bianliang_name as other_name
  • from module import *导入全部变量名

其他知识

  • __name__
    • 在本模块中执行print(__name__)返回值为__main__

    • 在其他模块中作为导入模块中时返回值为模块名

    • 因此

        if __name__ == '__main__':
        	print('执行本模块时想打印的话,作为导入模块不执行的话')
      

  • 一大堆的模块的集合
  • 把解决一类的问题模块放在同一个文件夹中,即包

包的导入

  • import``from 包名 import 变量名

      import dir1.dir2.dir3 import name as other_name
    
  • 包的导入会自动执行__init__.py

  • 绝对路径

    • 包的导入要导入至模块所在文件夹
    • 包的导入要从模块所在当前根目录开始导入,检索时找的是根目录的名称
  • 相对路径

    • .代表当前路径
    • ..代表上级目录

程序编写规范格式

-bin(程序入口)
	-start.py
	#一般书写定式
	import os
	import sys
	from core import core
	sys.path.append(os.path.dirname(os.getcwd()))	#将当前文件所在目录的父目录写入sys.path
	if __name__ == '__main__':
		core.main()	#调用主函数
		
-conf(配置文件,给运维人员看的)
	-config.ini
	-my_log_setting.py
	-settings.py
	
-core(核心代码)
	-core.py
	
-db(数据库)
	-alex_json
	-egon_json
	
-lib(自己写的包或模块)
	-read_ini.py
	
-log(日志文件)
	-all2.log
原文地址:https://www.cnblogs.com/liliudong/p/9610042.html